In order to understand Advanced Content Types, it helps to understand a little bit about how WordPress works. WordPress comprises PHP andMySQL. MySQL is the database that stores all of your website’s information, and PHP is the code allows for interaction between the web browser and the database. PHP grabs information from the database and spits it out in the browser, and it takes data that you have entered into your browser and stores in the database.

The MySQL database is made up of tables that are related to each other. This image from the Codex shows the default tables that come with WordPress:


Whenever you create a Custom Post Type, this is added to the wp_posts table in your database. You can see the book Custom Post Type has been added to the wp_posts table in the below image.

Enter Advanced Content Types

Rather than being stored in wp_posts, Advanced Content Types are stored in their own database table. This means that they are not WordPress objects but are independent of WordPress. If you were to create Books as an Advanced Content Type rather than as a Custom Post Type, it would appear in its own table:


When to Use Advanced Content Types

Unless you are a developer that specifically requires the functionality that comes with storing your data in another table in your database, we strongly advise that you stick to Custom Post Types. Before deciding to use an Advanced Content Type, please be sure to review our resources on their use, to ensure that you are aware of their unique needs, limitations and features. If you’re a developer and you’re curious about the functionality that you’ll get from Advanced Content Types, check out our comparison table.

Here are three examples of occasions when Advanced Content Types might be used:

  1. You need your data to be separate from your WordPress database tables. This might be necessary, for example, if you are using another piece of software with which you wish to share the database. Advanced Content Types means that you can interface between WordPress and that software.
  2. You are querying many fields at once from the same table (typically, at least most than 15). This could be used for reporting and statistics.
  3. You have data that gets reset periodically.

a screenshot of the create a new content type box - advanced content type is selected in the dropdown. The content type has the plural label students and the singular label student

You’ll notice that Advanced Content Types act in a similar way to Drupal CCK. If you don’t know what Drupal CCK is then you probably don’t need to use Advanced Content Types!