Change CPT 'Add New Post' to CPT Name - wordpress

How do I change the 'Add New Post' to reflect the name of my custom post type? Do I add something to the following code. I know it can be done...
function create_post_type() {
register_post_type( 'venues',
array(
'labels' => array(
'name' => __( 'Venues' ),
'singular_name' => __( 'Venue' )
),
);
Screenshot

In the labels array add:
'add_new' => _x( 'Add New', 'venue', 'your-plugin-textdomain' ),
'add_new_item' => __( 'Add New Venue', 'your-plugin-textdomain' ),
Also read the WordPress codex:
https://codex.wordpress.org/Function_Reference/register_post_type

You can use the code below to get the result expected.
<?php
$labels = array(
'name' => _x( 'Venues', 'Post Type General Name', 'text-domain' ),
'singular_name' => _x( 'Venue', 'Post Type Singular Name', 'text-domain' ),
'menu_name' => esc_html__( 'Venues', 'text-domain' ),
'parent_item_colon' => esc_html__( 'Parent Venues', 'text-domain' ),
'all_items' => esc_html__( 'All Venues', 'text-domain' ),
'view_item' => esc_html__( 'View Venues', 'text-domain' ),
'add_new_item' => esc_html__( 'Add New Venues', 'text-domain' ),
'add_new' => esc_html__( 'Add New', 'text-domain' ),
'edit_item' => esc_html__( 'Edit Venues', 'text-domain' ),
'update_item' => esc_html__( 'Update Venues', 'text-domain' ),
'search_items' => esc_html__( 'Search Venues', 'text-domain' ),
'not_found' => esc_html__( 'Not Found', 'text-domain' ),
'not_found_in_trash' => esc_html__( 'Not found in Trash', 'text-domain' ),
);
// Set other options for Custom Post Type
$args = array(
'label' => esc_html__( 'venues', 'text-domain' ),
'description' => esc_html__( 'Venues news and reviews', 'text-domain' ),
'labels' => $labels,
// Features this CPT supports in Post Editor
'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'custom-fields', ),
// You can associate this CPT with a taxonomy or custom taxonomy.
'taxonomies' => array( 'main_product_category' ),
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_admin_bar' => true,
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'post',
);
register_post_type( 'venues', $args );
Hope this will help.

Related

WordPress Query Loop Block not showing Custom Post Types

I have registered a new custom post type by hard coding it into my theme (yes, I could/should move this to a plugin I know!).
But when using the new Query Loop block, the only options under Post Type are 'posts' and 'pages'. Is there something missing from my CPT code causing this issue or could it be something else?
Thanks in advance.
<?php
// Register Custom Post Type
function cpt_listings_function() {
$labels = array(
'name' => _x( 'Listings', 'Post Type General Name', 'text_domain' ),
'singular_name' => _x( 'Listing', 'Post Type Singular Name', 'text_domain' ),
'menu_name' => __( 'Listings', 'text_domain' ),
'name_admin_bar' => __( 'Listings', 'text_domain' ),
'archives' => __( 'Listing Archives', 'text_domain' ),
'attributes' => __( 'Listing Attributes', 'text_domain' ),
'parent_item_colon' => __( 'Parent Listing:', 'text_domain' ),
'all_items' => __( 'All Listings', 'text_domain' ),
'add_new_item' => __( 'Add New Listing', 'text_domain' ),
'add_new' => __( 'Add New Listing', 'text_domain' ),
'new_item' => __( 'New Listing', 'text_domain' ),
'edit_item' => __( 'Edit Listing', 'text_domain' ),
'update_item' => __( 'Update Listing', 'text_domain' ),
'view_item' => __( 'View Listing', 'text_domain' ),
'view_items' => __( 'View Listings', 'text_domain' ),
'search_items' => __( 'Search Listing', '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 listing', 'text_domain' ),
'uploaded_to_this_item' => __( 'Uploaded to this Listing', 'text_domain' ),
'items_list' => __( 'Listings list', 'text_domain' ),
'items_list_navigation' => __( 'Listings list navigation', 'text_domain' ),
'filter_items_list' => __( 'Filter listings list', 'text_domain' ),
);
$rewrite = array(
'slug' => 'listing',
'with_front' => true,
'hierarchical' => false,
);
$args = array(
'label' => __( 'Listing', 'text_domain' ),
'description' => __( 'Property Listings Custom Post Type', 'text_domain' ),
'labels' => $labels,
'supports' => array( 'title', 'editor', 'thumbnail', 'comments', 'revisions', 'custom-fields', 'page-attributes', 'author' ),
'taxonomies' => array(),
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 100,
'menu_icon' => 'dashicons-admin-multisite',
'show_in_admin_bar' => true,
'show_in_nav_menus' => true,
'can_export' => true,
'has_archive' => 'listings',
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'post',
'rewrite' => $rewrite,
'capability_type' => array( 'listing', 'listings' ),
'map_meta_cap' => true,
);
register_post_type( 'post_type_listings', $args );
}
add_action( 'init', 'cpt_listings_function', 0 );
I resolved this by adding the following code to my custom post type function above:
'show_in_rest' => true,
More info here: https://developer.wordpress.org/rest-api/extending-the-rest-api/adding-rest-api-support-for-custom-content-types/

Layout for custom category

i have a project in wordpress
in my project there are tow custom post type (video - photos)
in each type there are custom category
how can i can write code for each category , every category has different styling
what is the files i have to add ?
and what is the code in each one ?
this is my code in functions.php
<?php
// Rigester Custom Post Video
add_action( 'init', 'codex_video_init' );
/**
* Register a video post type.
*
* #link http://codex.wordpress.org/Function_Reference/register_post_type
*/
function codex_video_init() {
$labels = array(
'name' => _x( 'Video', 'post type general name', 'your-plugin-textdomain' ),
'singular_name' => _x( 'Video', 'post type singular name', 'your-plugin-textdomain' ),
'menu_name' => _x( 'Video', 'admin menu', 'your-plugin-textdomain' ),
'name_admin_bar' => _x( 'Video', 'add new on admin bar', 'your-plugin-textdomain' ),
'add_new' => _x( 'Add New', 'pdf', 'your-plugin-textdomain' ),
'add_new_item' => __( 'Add New Video', 'your-plugin-textdomain' ),
'new_item' => __( 'New Video', 'your-plugin-textdomain' ),
'edit_item' => __( 'Edit Video', 'your-plugin-textdomain' ),
'view_item' => __( 'View Video', 'your-plugin-textdomain' ),
'all_items' => __( 'All Videos', 'your-plugin-textdomain' ),
'search_items' => __( 'Search Videos', 'your-plugin-textdomain' ),
'parent_item_colon' => __( 'Parent Video:', 'your-plugin-textdomain' ),
'not_found' => __( 'No Video found.', 'your-plugin-textdomain' ),
'not_found_in_trash' => __( 'No Video found in Trash.', 'your-plugin-textdomain' )
);
$args = array(
'labels' => $labels,
'description' => __( 'Description.', 'your-plugin-textdomain' ),
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'video' ),
'capability_type' => 'post',
'taxonomies' => array( 'category' ),
'has_archive' => true,
'hierarchical' => false,
'menu_position' => null,
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' )
);
register_post_type( 'video', $args );
}
// Rigester Custom Post Photo
add_action( 'init', 'codex_photo_init' );
/**
* Register a photo post type.
*
* #link http://codex.wordpress.org/Function_Reference/register_post_type
*/
function codex_photo_init() {
$labels = array(
'name' => _x( 'Photo', 'post type general name', 'your-plugin-textdomain' ),
'singular_name' => _x( 'Photo', 'post type singular name', 'your-plugin-textdomain' ),
'menu_name' => _x( 'Photo', 'admin menu', 'your-plugin-textdomain' ),
'name_admin_bar' => _x( 'Photo', 'add new on admin bar', 'your-plugin-textdomain' ),
'add_new' => _x( 'Add New', 'photo', 'your-plugin-textdomain' ),
'add_new_item' => __( 'Add New Photo', 'your-plugin-textdomain' ),
'new_item' => __( 'New Photo', 'your-plugin-textdomain' ),
'edit_item' => __( 'Edit Photo', 'your-plugin-textdomain' ),
'view_item' => __( 'View Photo', 'your-plugin-textdomain' ),
'all_items' => __( 'All Photos', 'your-plugin-textdomain' ),
'search_items' => __( 'Search Photos', 'your-plugin-textdomain' ),
'parent_item_colon' => __( 'Parent Photo:', 'your-plugin-textdomain' ),
'not_found' => __( 'No Photo found.', 'your-plugin-textdomain' ),
'not_found_in_trash' => __( 'No Photo found in Trash.', 'your-plugin-textdomain' )
);
$args = array(
'labels' => $labels,
'description' => __( 'Description.', 'your-plugin-textdomain' ),
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'photo' ),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => null,
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' )
);
register_post_type( 'photo', $args );
}
?>
Just simply, copy your themes "category.php", rename "category-CATID.php" and upload theme's folder.
Replace CATID with your category id, and edit for your cat.

Check is custom post type

I have a custom post type :
// Custom posttype Events
$labels = array(
'name' => _x('Events', 'Post Type General Name'),
'singular_name' => _x('Events', 'Post Type Singular Name'),
'menu_name' => __('Events'),
'parent_item_colon' => __('Events:'),
'all_items' => __('All Items'),
'view_item' => __('View Item'),
'add_new_item' => __('Add New Event'),
'add_new' => __('Add New'),
'edit_item' => __('Edit Item'),
'update_item' => __('Update Item'),
'search_items' => __('Search Item'),
'not_found' => __('Not found'),
'not_found_in_trash' => __('Not found in Trash'),
);
$args = array(
'labels' => $labels,
'supports' => array('title', 'editor', 'excerpt', 'thumbnail', 'comments', 'trackbacks', 'custom-fields',),
'taxonomies' => array('post_tag'),
'hierarchical' => false,
'rewrite' => array('slug' => __('events')),
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_admin_bar' => true,
'menu_position' => 10,
'menu_icon' => 'dashicons-images-alt2',
'can_export' => true,
'has_archive' => false,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'post',
);
register_post_type('events', $args);
And a taxonomy for custom post type Events:
// Add new "Type" taxonomy to Events
register_taxonomy('type-events', 'event', array(
'hierarchical' => true,
'labels' => array(
'name' => _x( 'Types', 'taxonomy general name', 'my_theme' ),
'singular_name' => _x( 'Types', 'taxonomy singular name', 'my_theme' ),
'search_items' => __( 'Search Type', 'my_theme' ),
'all_items' => __( 'All Types', 'my_theme' ),
'parent_item' => __( 'Parent Type', 'my_theme' ),
'parent_item_colon' => __( 'Parent Type:', 'my_theme' ),
'edit_item' => __( 'Edit Type', 'my_theme' ),
'update_item' => __( 'Update Type', 'my_theme' ),
'add_new_item' => __( 'Add New Type', 'my_theme' ),
'new_item_name' => __( 'New Type', 'my_theme' ),
'menu_name' => __( 'Types', 'my_theme' ),
),
// Control the slugs used for this taxonomy
'rewrite' => array(
'slug' => 'type-events',
'with_front' => false,
'hierarchical' => true
),
));
In Dashboard Admin, i create two taxonomy type event :
Taxonomies
Custom post type and taxonomy use the same template.
In file template, I want check if it is post type or taxonomy.
Currently, I use is_post_type_archive() to check, but the both return true. That is not what I need.
How to check if this is custom post type or taxonomy?
If you want to check if a post is the custom post type events within the loop you can use this:
<?php if ( get_post_type() === 'events' ) {
/* Do Stuff */
} ?>
If this is outside of the loop, you need to pass the post id into get_post_type():
<?php if ( get_post_type( $post_id ) === 'events' ) {
/* Do Stuff */
} ?>
Edit
You can test for multiple custom post types this way:
<?php if ( get_post_type() === 'events' || get_post_type() === 'promos' || get_post_type() === 'courses' ) {
/* Do Stuff */
} ?>
This is little complicated, maybe the best way is to check with is_post_type_archive() and is_tax(), before you load the themplate, but in your case you may try with get_queried_object().
Codex - get_queried_object
The returned object will have properties taxonomy, term_id, and term_taxonomy_id if this is taxonomy.
So maybe you can use something like get_queried_object()->taxonomy to determine if this is taxonomy and get its name and get_queried_object()->query_var for custom_post_type.
if ( isset( get_queried_object()->taxonomy ) {
//do taxonomy work ...
}
if ( property_exists( get_queried_object()->query_var ) {
//post things
}
function custom_post_type() {
$singular="Car";
$plural="cars";
$labels = array(
'name' => _x( $plural, 'Post Type General Name', 'text_domain' ),
'singular_name' => _x( $singular, 'Post Type Singular Name', 'text_domain' ),
'menu_name' => __( $plural, 'text_domain' ),
'name_admin_bar' => __( $singular, 'text_domain' ),
'archives' => __( '$singular Archives', 'text_domain' ),
'attributes' => __( $singular.' Attributes', 'text_domain' ),
'parent_item_colon' => __( 'Parent '.$singular.':', 'text_domain' ),
'all_items' => __( 'All '.$plural, 'text_domain' ),
'add_new_item' => __( 'Add New '.$singular, 'text_domain' ),
'add_new' => __( 'Add New', 'text_domain' ),
'new_item' => __( 'New '.$singular, 'text_domain' ),
'edit_item' => __( 'Edit '.$singular, 'text_domain' ),
'update_item' => __( 'Update '.$singular, 'text_domain' ),
'view_item' => __( 'View '.$singular, 'text_domain' ),
'view_items' => __( 'View '.$singular, 'text_domain' ),
'search_items' => __( 'Search '.$singular, '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 '.$singular, 'text_domain' ),
'uploaded_to_this_item' => __( 'Uploaded to this '.$singular, 'text_domain' ),
'items_list' => __( $singular.' list', 'text_domain' ),
'items_list_navigation' => __( $singular.' list navigation', 'text_domain' ),
'filter_items_list' => __( 'Filter '.$singular.' list', 'text_domain' ),
);
$supports =array('title','editor','author','thumbnail','excerpt','trackbacks','custom-fields','comments','revisions','page-attributes','post-formats');
$texonomies =array('category', 'post_tag');
$args = array(
'label' => __( $singular, 'text_domain' ),
'description' => __( $singular.' Description', 'text_domain' ),
'labels' => $labels,
'supports' => $supports,
'taxonomies' => $texonomies,
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 8,
'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' => 'page',
'menu_icon' => 'dashicons-video-alt'`enter code here`
);
register_post_type( 'post_type', $args );
}
add_action( 'init', 'custom_post_type');

Custom taxonomy slug before post name

I want that specific custom post url will look like:
http://www.foo.bar/{taxonomy-term-slug}/{postname}
Im using this code to create a custom post type and custom taxonomy
function create_post_types(){
$labels = array(
'name' => _x( "name_plural", 'Post Type General Name', 'WP_TEXTDOMAIN' ),
'singular_name' => _x( "name_singular", 'Post Type Singular Name', 'WP_TEXTDOMAIN' ),
'menu_name' => __( "name_plural", 'WP_TEXTDOMAIN' ),
'parent_item_colon' => __( "name_plural - Parent:', 'WP_TEXTDOMAIN' ),
'all_items' => __( 'All name_plural", 'WP_TEXTDOMAIN' ),
'view_item' => __( 'View name_plural', 'WP_TEXTDOMAIN' ),
'add_new_item' => __( 'New name_singular', 'WP_TEXTDOMAIN' ),
'add_new' => __( 'New name_singular', 'WP_TEXTDOMAIN' ),
'edit_item' => __( 'Edit name_singular', 'WP_TEXTDOMAIN' ),
'update_item' => __( 'Update name_singular', 'WP_TEXTDOMAIN' ),
'search_items' => __( 'Search name_singular', 'WP_TEXTDOMAIN' ),
'not_found' => __( 'Not Found', 'WP_TEXTDOMAIN' ),
'not_found_in_trash' => __( 'Not Found In Trash', 'WP_TEXTDOMAIN' ),
);
$args = array(
'label' => __( "name_plural", 'WP_TEXTDOMAIN' ),
'menu_icon' => "icon",
'description' => __( 'Description', 'WP_TEXTDOMAIN' ),
'labels' => $labels,
'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail', ),
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_admin_bar' => true,
'menu_position' => 5,
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'public' => true,
'capability_type' => 'page',
'query_var' => true,
'rewrite' => array('slug' => '%product_cat%','with_front' => false)
);
register_post_type( 'product', $args );
$labels_cat = array(
'name' => _x( "name_plural", 'Taxonomy General Name', 'WP_TEXTDOMAIN' ),
'singular_name' => _x( "name_singular", 'Taxonomy Singular Name', 'WP_TEXTDOMAIN' ),
'menu_name' => __( 'Categories', 'WP_TEXTDOMAIN' ),
'all_items' => __( 'All Categories', 'WP_TEXTDOMAIN' ),
'parent_item' => __( 'Category - Parent', 'WP_TEXTDOMAIN' ),
'parent_item_colon' => __( 'Category - Parent:', 'WP_TEXTDOMAIN' ),
'new_item_name' => __( 'New name_singular Category', 'WP_TEXTDOMAIN' ),
'add_new_item' => __( 'New name_singular Category', 'WP_TEXTDOMAIN' ),
'edit_item' => __( 'Edit Category', 'WP_TEXTDOMAIN' ),
'update_item' => __( 'Update Category', 'WP_TEXTDOMAIN' ),
'view_item' => __( 'View Category', 'WP_TEXTDOMAIN' ),
'separate_items_with_commas' => __( 'Saparate Category With Commas', 'WP_TEXTDOMAIN' ),
'add_or_remove_items' => __( 'Add / Remove Category', 'WP_TEXTDOMAIN' ),
'choose_from_most_used' => __( 'Most Used', 'WP_TEXTDOMAIN' ),
'popular_items' => __( 'Populars', 'WP_TEXTDOMAIN' ),
'search_items' => __( 'Search Category', 'WP_TEXTDOMAIN' ),
'not_found' => __( 'Not Found', 'WP_TEXTDOMAIN' ),
);
$args_cat = array(
'labels' => $labels_cat,
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_nav_menus' => true,
'show_tagcloud' => true,
'query_var' => 'product_cat',
'rewrite' => array('slug' => 'product_cat' ),
'_builtin' => false
);
register_taxonomy( 'product_cat', 'product', $args_cat );
}
// Hook into the 'init' action
add_action( 'init', 'create_post_types', 0);
add_filter('post_link', 'product_permalink', 1, 3);
add_filter('post_type_link', 'product_permalink', 1, 3);
function product_permalink($permalink, $post_id, $leavename) {
if (strpos($permalink, '%product_cat%') === FALSE) return $permalink;
// Get post
$post = get_post($post_id);
if (!$post) return $permalink;
// Get taxonomy terms
$terms = wp_get_object_terms($post->ID, 'product_cat_cat');
if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0]))
$taxonomy_slug = $terms[0]->slug;
else $taxonomy_slug = 'none';
return str_replace('%product_cat_cat%', $taxonomy_slug, $permalink);
}
The link structure that im getting is correct,
But once i try to click the link i get a 404 Page
Any thoughts ?
Please use this code
// post type product
function custom_post_products() {
$labels = array(
'name' => _x( 'Products', 'post type general name' ),
'singular_name' => _x( 'Product', 'post type singular name' ),
'add_new' => _x( 'Add Product','News' ),
'add_new_item' => __( 'Add Product' ),
'edit_item' => __( 'Edit' ),
'new_item' => __( 'New Product' ),
'all_items' => __( 'All products' ),
'view_item' => __( 'View' ),
'search_items' => __( 'Search' ),
'not_found' => __( 'No record found' ),
'not_found_in_trash' => __( 'No record found in the Trash' ),
'menu_name' => 'Products'
);
$args = array(
'labels' => $labels,
'description' => 'Mcarthur products',
'public' => true,
'supports' => array( 'title', 'editor', 'thumbnail' ),
'menu_position' => 15
);
register_post_type( 'products', $args );
}
add_action( 'init', 'custom_post_products' );
add_action( 'init', 'build_taxonomies_products', 0 );
//custom texonomy
function build_taxonomies_products() {
register_taxonomy( 'products-cat', 'products', array( 'hierarchical' => true, 'label' => 'Categories', 'query_var' => true, 'rewrite' => true ) );
}

show white screen for single-type.php and archive-type.php file in wordpress

i have created custom post type 'gallery' to display in single page named single-gallery.php and archive-gallery.php file but it provides me white screen
Please help me to solve my problem... here is my code..
// Register Custom Post Type
function gallery() {
$labels = array(
'name' => _x( 'gallery', 'Post Type General Name', 'text_domain' ),
'singular_name' => _x( 'gallery', 'Post Type Singular Name', 'text_domain' ),
'menu_name' => __( 'gallery', 'text_domain' ),
'parent_item_colon' => __( 'Parent gallery', 'text_domain' ),
'all_items' => __( 'All gallery', 'text_domain' ),
'view_item' => __( 'View gallery', 'text_domain' ),
'add_new_item' => __( 'Add New gallery', 'text_domain' ),
'add_new' => __( 'New gallery', 'text_domain' ),
'edit_item' => __( 'Edit gallery', 'text_domain' ),
'update_item' => __( 'Update gallery', 'text_domain' ),
'search_items' => __( 'Search gallerys', 'text_domain' ),
'not_found' => __( 'No gallerys found', 'text_domain' ),
'not_found_in_trash' => __( 'No gallerys found in Trash', 'text_domain' ),
);
$args = array(
'label' => __( 'gallery', 'text_domain' ),
'description' => __( 'gallery information pages', 'text_domain' ),
'labels' => $labels,
'supports' => array( 'title', 'editor', 'thumbnail', 'comments', 'custom-fields', ),
'taxonomies' => array( 'category', 'post_tag' ),
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_admin_bar' => true,
'menu_position' => 5,
'menu_icon' => '',
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'page',
);
register_post_type( 'gallery', $args );
}
// Hook into the 'init' action
add_action( 'init', 'gallery', 0 );
Sometimes just visiting the Permalink settings in wordpress admin fixes such issues. Have you tried that?

Resources