Creating a custom plugin in WordPress involves creating a PHP file with specific headers and functions. Similarly, creating a custom post type involves registering a new post type using WordPress hooks. Below is an example of how you can create a custom plugin with a custom post type:
- Create a new directory in the
wp-content/plugins
directory of your WordPress installation. Let’s call itcustom-plugin
. - Inside the
custom-plugin
directory, create a PHP file namedcustom-plugin.php
. - Add the following code to
custom-plugin.php
:
<?php
/*
Plugin Name: Custom Plugin
Description: This plugin creates a custom post type.
Version: 1.0
Author: Your Name
*/
// Register Custom Post Type
function custom_post_type() {
$labels = array(
'name' => _x( 'Custom Posts', 'Post Type General Name', 'text_domain' ),
'singular_name' => _x( 'Custom Post', 'Post Type Singular Name', 'text_domain' ),
'menu_name' => __( 'Custom Posts', 'text_domain' ),
'name_admin_bar' => __( 'Custom Post', 'text_domain' ),
'archives' => __( 'Item Archives', 'text_domain' ),
'attributes' => __( 'Item Attributes', 'text_domain' ),
'parent_item_colon' => __( 'Parent Item:', 'text_domain' ),
'all_items' => __( 'All Items', 'text_domain' ),
'add_new_item' => __( 'Add New Item', 'text_domain' ),
'add_new' => __( 'Add New', 'text_domain' ),
'new_item' => __( 'New Item', 'text_domain' ),
'edit_item' => __( 'Edit Item', 'text_domain' ),
'update_item' => __( 'Update Item', 'text_domain' ),
'view_item' => __( 'View Item', 'text_domain' ),
'view_items' => __( 'View Items', 'text_domain' ),
'search_items' => __( 'Search Item', 'text_domain' ),
'not_found' => __( 'Not found', 'text_domain' ),
'not_found_in_trash' => __( 'Not found in Trash', 'text_domain' ),
'featured_image' => __( 'Featured Image', 'text_domain' ),
'set_featured_image' => __( 'Set featured image', 'text_domain' ),
'remove_featured_image' => __( 'Remove featured image', 'text_domain' ),
'use_featured_image' => __( 'Use as featured image', 'text_domain' ),
'insert_into_item' => __( 'Insert into item', 'text_domain' ),
'uploaded_to_this_item' => __( 'Uploaded to this item', 'text_domain' ),
'items_list' => __( 'Items list', 'text_domain' ),
'items_list_navigation' => __( 'Items list navigation', 'text_domain' ),
'filter_items_list' => __( 'Filter items list', 'text_domain' ),
);
$args = array(
'label' => __( 'Custom Post', 'text_domain' ),
'description' => __( 'Custom Post Type Description', 'text_domain' ),
'labels' => $labels,
'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields', 'excerpt' ),
'taxonomies' => array( 'category', 'post_tag' ),
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 5,
'show_in_admin_bar' => true,
'show_in_nav_menus' => true,
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'post',
'show_in_rest' => true,
);
register_post_type( 'custom_post', $args );
}
add_action( 'init', 'custom_post_type', 0 );
- Save the file.
- Go to your WordPress admin panel, navigate to the Plugins section, and activate the “Custom Plugin” plugin.
This plugin will create a new custom post type called “Custom Posts” with standard post features like title, editor, thumbnail, etc. You can further customize the labels, features, and options as per your requirements by modifying the arguments passed to the register_post_type
function.