This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.
![Create Dynamic Custom Post Types in WordPress Create Dynamic Custom Post Types in WordPress](https://weplugins.com/wp-content/uploads/fly-images/35607/image5-min-1170x540-c.jpg)
Custom post types & custom fields are widely used at our company and without these, we can’t imagine a website other than a blog.
We don’t use any plugin to create custom post types because of following reasons.
- To avoid unnecessary dependencies on third party plugins.
- Errors in the upcoming release of the plugin can affect our custom programming and might be bugs on the live site.
- If client uninstalls this accidentally after a long period of development which happens sometimes.
This guides is about to create dynamic custom post types using procedure & oops programming and we guess after reading it, you’ll never use any plugin because it’s super easy to do.
Procedural Way to Create a Custom Post Types
Procedure oriented programming is preferred if you’re creating a custom post type in theme. You can write it in functions.php located at your installed theme. Below are the steps to understand it easily.
- Step 1: Make sure WordPress recognize your function on load so we use “init” action to register our function.
add_action( 'init', 'create_custom_post_type' );
- Step 2: now in the definition of function ‘create_custom_post_type’, we can register as many as custom post type we need.
function create_custom_post_type() { register_post_type( 'slides', array( 'labels' => array( 'name' => __( 'Slides' ), 'singular_name' => __( 'Slide' ) ), 'public' => true, 'has_archive' => true, ) ); }
Note: If we’re creating custom post type to save some private data, don’t make it ‘public’=>true and not need for ‘has_archive’=>true if the custom post type is not public.
OOPS Way to Create a Custom Post Types
Object oriented programming is preferred if you’re creating a custom post type using a plugin. Below is “Custom_Posts” class which we use for our projects.
class Custom_Posts { function __construct($init) { $this->settings = $init; add_action( 'init', array(&$this, 'add_custom_post_type') ); } function add_custom_post_type() { register_post_type( $this->settings['slug'], array( 'labels' => array( 'name' => __( $this->settings['name'] ), 'singular_name' => __( $this->settings['singular_name'] ) ), 'public' => $this->settings['is_public'], 'has_archive' => $this->settings['has_archive'], ) ); } }
Now you need to just initialize this object with your new custom post settings. Below is example code to create a SLIDES custom post type.
$custom_posts = array( "slug" => "slides", "name" => "slides", "singular_name" => "slide", "is_public" => true, "has_archive" => false, ); $var = new Custom_Posts ($custom_posts);
Conclusion
Adding too many custom post types is not a good practice because that’s can affect your speed of database transactions. Some of the developers prefer a dedicated category of the posts instead of a new custom post types which are not a good idea. If you don’t want to make your custom post type public, I’d prefer a new custom table instead of a new custom post type.
Explore the latest in WordPress
Trying to stay on top of it all? Get the best tools, resources and inspiration sent to your inbox every Wednesday.