1

I am new to wordpress, and I am trying to add multiple custom post types in the functions.php.

Adding one cpt is fine. but if I use the same function to add the second cpt (with just a change of the function name), the second cpt doesn't show in the dashboard menu.

Below are the codes. I would greatly appreciate help in this. Thank you!

// register a new post type with Divi builder on

 function create_new_cpt()
{
$labels = array(
    'name' => _x('Article', 'Article', 'divi'), // CPT name is Article. Replace every instance of this CPT name with your own
    'singular_name' => _x('Article', 'article', 'divi'),
    'menu_name' => __('Article', 'divi'),
    'edit_item' => __('Edit Article', 'divi'),
    'add_new_item'          => __( 'Add New Article', 'divi' ),
    'update_item'           => __( 'Update Article', 'text_domain' ),
    'view_item'             => __( 'View Article', 'text_domain' ),
    'not_found_in_trash' => __('Not found in Trash', 'divi')
);
$args   = array(
    'labels' => $labels,
    'description'       => __('Articles', 'divi'),
    'supports'          => array('title', 'author', 'editor', 'thumbnail', 'excerpt', 'comments', 'revisions', 'custom-fields'),
    'menu_icon'         => 'dashicons-welcome-write-blog',
    'menu-position'     => null,
    'public'            => true,
    'publicly_queryable'=> true,
    'show_ui'           => true,
    'show_in_menu'      => true,
    'show_in_admin_bar' => true,
    'rewrite'           => array( 'slug' => 'article' ),
    'capability_type'   => 'post',
    'can_export'        => true,
    'has_archive'       => true,
    'hierarchical'      => false,
    'publicly_queryable'=> true
);
register_post_type('article', $args); // registering the CPT. 
    $labels = array(
    'name'              => esc_html__( 'Article Categories', 'divi' ),
    'singular_name'     => esc_html__( 'Article Category', 'divi' ),
    'search_items'      => esc_html__( 'Search Categories', 'divi' ),
    'all_items'         => esc_html__( 'All Categories', 'divi' ),
    'parent_item'       => esc_html__( 'Parent Category', 'divi' ),
    'parent_item_colon' => esc_html__( 'Parent Category:', 'divi' ),
    'edit_item'         => esc_html__( 'Edit Category', 'divi' ),
    'update_item'       => esc_html__( 'Update Category', 'divi' ),
    'add_new_item'      => esc_html__( 'Add New Category', 'divi' ),
    'new_item_name'     => esc_html__( 'New Category Name', 'divi' ),
    'menu_name'         => esc_html__( 'Categories', 'divi' ),
);
// registering the custom taxomoy for this CPT. 
register_taxonomy( 'article_category', array( 'article' ), array(
    'hierarchical'      => true,
    'labels'            => $labels,
    'show_ui'           => true,
    'show_admin_column' => true,
    'query_var'         => true,
) );
$labels = array(
    'name'              => esc_html__( 'Article Tags', 'divi' ),
    'singular_name'     => esc_html__( 'Article Tag', 'divi' ),
    'search_items'      => esc_html__( 'Search Tags', 'divi' ),
    'all_items'         => esc_html__( 'All Tags', 'divi' ),
    'parent_item'       => esc_html__( 'Parent Tag', 'divi' ),
    'parent_item_colon' => esc_html__( 'Parent Tag:', 'divi' ),
    'edit_item'         => esc_html__( 'Edit Tag', 'divi' ),
    'update_item'       => esc_html__( 'Update Tag', 'divi' ),
    'add_new_item'      => esc_html__( 'Add New Tag', 'divi' ),
    'new_item_name'     => esc_html__( 'New Tag Name', 'divi' ),
    'menu_name'         => esc_html__( 'Tags', 'divi' ),
);
register_taxonomy( 'article_tag', array( 'article' ), array(
    'hierarchical'      => false,
    'labels'            => $labels,
    'show_ui'           => true,
    'show_admin_column' => true,
    'query_var'         => true,
) );

}    

     // adding divi page builder to this CPT
function add_db_to_article ($post_types) {
$custom_post_types = array ('article');
$output = array_merge($post_types, $custom_post_types);
return $output;
}   

add_action('init', 'create_new_cpt');
add_filter( 'et_builder_post_types', 'add_db_to_article' );


 //  register a new post type with Divi builder on

function create_new_cpt2()
{
$labels = array(
    'name' => _x('News', 'News', 'divi'), // CPT name is News. Replace every instance of this CPT name with your own
    'singular_name' => _x('News', 'news', 'divi'),
    'menu_name' => __('News', 'divi'),
    'edit_item' => __('Edit News', 'divi'),
    'add_new_item'          => __( 'Add New News', 'divi' ),
    'update_item'           => __( 'Update News', 'text_domain' ),
    'view_item'             => __( 'View News', 'text_domain' ),
    'not_found_in_trash' => __('Not found in Trash', 'divi')
);
$args   = array(
    'labels' => $labels,
    'description'       => __('News', 'divi'),
    'supports'          => array('title', 'author', 'editor', 'thumbnail', 'excerpt', 'comments', 'revisions', 'custom-fields'),
    'menu_icon'         => 'dashicons-welcome-write-blog',
    'menu-position'     => null,
    'public'            => true,
    'publicly_queryable'=> true,
    'show_ui'           => true,
    'show_in_menu'      => true,
    'show_in_admin_bar' => true,
    'rewrite'           => array( 'slug' => 'news' ),
    'capability_type'   => 'post',
    'can_export'        => true,
    'has_archive'       => true,
    'hierarchical'      => false,
    'publicly_queryable'=> true
);

register_post_type('news', $args); // registering the CPT. 
    $labels = array(
    'name'              => esc_html__( 'News Categories', 'divi' ),
    'singular_name'     => esc_html__( 'News Category', 'divi' ),
    'search_items'      => esc_html__( 'Search Categories', 'divi' ),
    'all_items'         => esc_html__( 'All Categories', 'divi' ),
    'parent_item'       => esc_html__( 'Parent Category', 'divi' ),
    'parent_item_colon' => esc_html__( 'Parent Category:', 'divi' ),
    'edit_item'         => esc_html__( 'Edit Category', 'divi' ),
    'update_item'       => esc_html__( 'Update Category', 'divi' ),
    'add_new_item'      => esc_html__( 'Add New Category', 'divi' ),
    'new_item_name'     => esc_html__( 'New Category Name', 'divi' ),
    'menu_name'         => esc_html__( 'Categories', 'divi' ),
);



// registering the custom taxomoy for this CPT. 
register_taxonomy( 'news_category', array( 'news' ), array(
    'hierarchical'      => true,
    'labels'            => $labels,
    'show_ui'           => true,
    'show_admin_column' => true,
    'query_var'         => true,
) );
$labels = array(
    'name'              => esc_html__( 'News Tags', 'divi' ),
    'singular_name'     => esc_html__( 'News Tag', 'divi' ),
    'search_items'      => esc_html__( 'Search Tags', 'divi' ),
    'all_items'         => esc_html__( 'All Tags', 'divi' ),
    'parent_item'       => esc_html__( 'Parent Tag', 'divi' ),
    'parent_item_colon' => esc_html__( 'Parent Tag:', 'divi' ),
    'edit_item'         => esc_html__( 'Edit Tag', 'divi' ),
    'update_item'       => esc_html__( 'Update Tag', 'divi' ),
    'add_new_item'      => esc_html__( 'Add New Tag', 'divi' ),
    'new_item_name'     => esc_html__( 'New Tag Name', 'divi' ),
    'menu_name'         => esc_html__( 'Tags', 'divi' ),
);
register_taxonomy( 'news_tag', array( 'news' ), array(
    'hierarchical'      => false,
    'labels'            => $labels,
    'show_ui'           => true,
    'show_admin_column' => true,
    'query_var'         => true,
) );

}
3

add add_action('init', 'create_new_cpt2'); in your snippet and modify add_db_to_article function as below,

function add_db_to_article ($post_types) {
    $custom_post_types = array ('article', 'news');
    $output = array_merge($post_types, $custom_post_types);
    return $output;
}

Note: 'news' is added in $custom_post_types array.

1

Your snippet is missing

add_action('init', 'create_new_cpt2');

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.