WordPress
wordpress php custom-post-type
Register Custom Post Type
WordPress function to register a custom post type with all common arguments.
function register_custom_post_type() {
$labels = array(
'name' => _x('Products', 'Post type general name', 'textdomain'),
'singular_name' => _x('Product', 'Post type singular name', 'textdomain'),
'menu_name' => _x('Products', 'Admin Menu text', 'textdomain'),
'name_admin_bar' => _x('Product', 'Add New on Toolbar', 'textdomain'),
'add_new' => __('Add New', 'textdomain'),
'add_new_item' => __('Add New Product', 'textdomain'),
'new_item' => __('New Product', 'textdomain'),
'edit_item' => __('Edit Product', 'textdomain'),
'view_item' => __('View Product', 'textdomain'),
'all_items' => __('All Products', 'textdomain'),
'search_items' => __('Search Products', 'textdomain'),
'not_found' => __('No products found.', 'textdomain'),
'not_found_in_trash' => __('No products found in Trash.', 'textdomain'),
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array('slug' => 'products'),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => null,
'menu_icon' => 'dashicons-products',
'supports' => array('title', 'editor', 'thumbnail', 'excerpt', 'custom-fields'),
'show_in_rest' => true, // Enable Gutenberg editor
);
register_post_type('product', $args);
}
add_action('init', 'register_custom_post_type');
Usage Notes
- Change
'product'to your desired post type slug - Update labels to match your content type
- Set
'show_in_rest' => trueto enable Gutenberg editor - Adjust
'supports'array based on needed features