I’m working on a random quote generator for one of my sites. I decided to create a custom post type called ‘quote’. I wanted to create a custom taxonomy for quote categories and another for quote tags since I want these categories and tags to be separate from the other categories and tags on the site.
First, I needed to register the quote custom post type:
register_post_type( 'quote', array( 'labels' => array( 'name' => __( 'Quotes' ), 'singular_name' => __( 'Quote' ), 'add_new' => __( 'Add New Quote' ), 'add_new_item' => __( 'Add Quote' ), 'edit' => __( 'Edit' ), 'edit_item' => __( 'Edit Quote' ), 'new_item' => __( 'New Quote' ), 'view' => __( 'View Quote' ), 'view_item' => __( 'View Quote' ), 'search_items' => __( 'Search Items' ), 'not_found' => __( 'No Quotes Found' ), 'not_found_in_trash' => __( 'No Quotes Found in Trash' ), 'parent' => __( 'Parent Event' ), ), 'public' => true, 'show_ui' => true, 'publicly_queryable' => true, 'exclude_from_search' => false, 'menu_position' => 20, 'hierarchical' => true, 'query_var' => true, 'supports' => array( 'title', 'editor', 'thumbnail' ), 'has_archive' => true, 'rewrite' => array('slug' => 'quotes'), ) );
Next we have to set up the variables and register the quote category custom taxonomy:
$labels = array( 'name' => __( 'Quote Categories' ), 'singular_name' => __( 'Quote Category' ), 'add_new' => __( 'Add New Quote Category'), 'add_new_item' => __( 'Add Quote Category' ), 'edit_item' => __( 'Edit Quote Category' ), 'new_item' => __( 'New Quote Category' ), 'view_item' => __( 'View Quote Category' ), 'search_items' => __( 'Search Quote Category' ), 'not_found' => __( 'No Quote Category found' ), 'not_found_in_trash' => __( 'No Quote Category found in Trash' ), ); $pages = array( 'quote' ); $args = array( 'labels' => $labels, 'singular_label' => __( 'Quote Category' ), 'public' => true, 'show_ui' => true, 'hierarchical' => true, 'show_tagcloud' => false, 'show_in_nav_menus' => true, 'rewrite' => array('slug' => 'quote-categories'), ); register_taxonomy( 'quote_categories' , $pages , $args );
And then the custom quote tags taxonomy:
$labels2 = array( 'name' => __( 'Quote Tags' ), 'singular_name' => __( 'Quote Tag' ), 'add_new' => __( 'Add New Quote Tag'), 'add_new_item' => __( 'Add Quote Tag' ), 'edit_item' => __( 'Edit Quote Tag' ), 'new_item' => __( 'New Quote Tag' ), 'view_item' => __( 'View Quote Tag' ), 'search_items' => __( 'Search Quote Tag' ), 'not_found' => __( 'No Quote Tag found' ), 'not_found_in_trash' => __( 'No Quote Tag found in Trash' ), ); $pages2 = array( 'quote' ); $args2 = array( 'labels' => $labels2, 'singular_label' => __( 'Quote Tags' ), 'public' => true, 'show_ui' => true, 'hierarchical' => false, 'show_tagcloud' => true, 'show_in_nav_menus' => true, 'rewrite' => array('slug' => 'quote-tags'), ); register_taxonomy( 'quote_tags' , $pages , $args2 );
One more thing we need to do is to refresh the rewrite rules so that our new permalinks will work for our new post type and taxonomies:
flush_rewrite_rules( false );
We now have a new custom post type for quotes along with quote categories and tags that show up in our WordPress Admin menu. Each quote will be added as a separate ‘post’.
add_action( 'init', 'create_quotes_post_type' ); function create_quotes_post_type() { register_post_type( 'quote', array( 'labels' => array( 'name' => __( 'Quotes' ), 'singular_name' => __( 'Quote' ), 'add_new' => __( 'Add New Quote' ), 'add_new_item' => __( 'Add Quote' ), 'edit' => __( 'Edit' ), 'edit_item' => __( 'Edit Quote' ), 'new_item' => __( 'New Quote' ), 'view' => __( 'View Quote' ), 'view_item' => __( 'View Quote' ), 'search_items' => __( 'Search Items' ), 'not_found' => __( 'No Quotes Found' ), 'not_found_in_trash' => __( 'No Quotes Found in Trash' ), 'parent' => __( 'Parent Event' ), ), 'public' => true, 'show_ui' => true, 'publicly_queryable' => true, 'exclude_from_search' => false, 'menu_position' => 20, 'hierarchical' => true, 'query_var' => true, 'supports' => array( 'title', 'editor', 'thumbnail' ), 'has_archive' => true, 'rewrite' => array('slug' => 'quotes'), ) ); $labels = array( 'name' => __( 'Quote Categories' ), 'singular_name' => __( 'Quote Category' ), 'add_new' => __( 'Add New Quote Category'), 'add_new_item' => __( 'Add Quote Category' ), 'edit_item' => __( 'Edit Quote Category' ), 'new_item' => __( 'New Quote Category' ), 'view_item' => __( 'View Quote Category' ), 'search_items' => __( 'Search Quote Category' ), 'not_found' => __( 'No Quote Category found' ), 'not_found_in_trash' => __( 'No Quote Category found in Trash' ), ); $labels2 = array( 'name' => __( 'Quote Tags' ), 'singular_name' => __( 'Quote Tag' ), 'add_new' => __( 'Add New Quote Tag'), 'add_new_item' => __( 'Add Quote Tag' ), 'edit_item' => __( 'Edit Quote Tag' ), 'new_item' => __( 'New Quote Tag' ), 'view_item' => __( 'View Quote Tag' ), 'search_items' => __( 'Search Quote Tag' ), 'not_found' => __( 'No Quote Tag found' ), 'not_found_in_trash' => __( 'No Quote Tag found in Trash' ), ); $pages = array( 'quote' ); $pages2 = array( 'quote' ); $args = array( 'labels' => $labels, 'singular_label' => __( 'Quote Category' ), 'public' => true, 'show_ui' => true, 'hierarchical' => true, 'show_tagcloud' => false, 'show_in_nav_menus' => true, 'rewrite' => array('slug' => 'quote-categories'), ); $args2 = array( 'labels' => $labels2, 'singular_label' => __( 'Quote Tags' ), 'public' => true, 'show_ui' => true, 'hierarchical' => false, 'show_tagcloud' => true, 'show_in_nav_menus' => true, 'rewrite' => array('slug' => 'quote-tags'), ); register_taxonomy( 'quote_categories' , $pages , $args ); register_taxonomy( 'quote_tags' , $pages , $args2 ); flush_rewrite_rules( false ); }
Pingback: Cullen Web Services | Add a WordPress Meta Box to a Post
Pingback: How to Choose a Random Post with a Custom Post Type in a Wordpress Shortcode - Cullen Web Services
Pingback: Post to a Facebook Wall from my WordPress Website - Cullen Web Services
Pingback: Display My Custom Post Categories (Custom Taxonomy) in a Dropdown - Cullen Web Services | Cullen Web Services