Layout for custom category - wordpress

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.

Related

Change CPT 'Add New Post' to CPT Name

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.

WordPress Custom Post Type with role and caps

I am developing real estate website using WordPress Custom Post Type, where user can publish, edit, delete their own post only. Here is my code but unable to achieve target...
function property_post_type() {
$labels = array(
'name' => _x( 'Properties', 'Post Type General Name', 'text_domain' ),
'singular_name' => _x( 'Property', 'Post Type Singular Name', 'text_domain' ),
'menu_name' => __( 'Properties', 'text_domain' ),
'name_admin_bar' => __( 'Property', 'text_domain' ),
'archives' => __( 'Item Archives', 'text_domain' ),
'attributes' => __( 'Item Attributes', 'text_domain' ),
'parent_item_colon' => __( 'Parent Item:', 'text_domain' ),
'all_items' => __( 'All Property', 'text_domain' ),
'add_new_item' => __( 'Add New Property', 'text_domain' ),
'add_new' => __( 'Add New', 'text_domain' ),
'new_item' => __( 'New Item', 'text_domain' ),
'edit_item' => __( 'Edit Property', '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' => __( 'Property', 'text_domain' ),
'description' => __( 'Properties information page.', 'text_domain' ),
'labels' => $labels,
'supports' => array( 'title', 'thumbnail', 'revisions'),
'taxonomies' => array( 'region', 'city' ),
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 5,
'menu_icon' => 'dashicons-admin-home',
'show_in_admin_bar' => true,
'show_in_nav_menus' => true,
'can_export' => true,
'has_archive' => false,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => array("property", "properties"),
'map_meta_cap' => true,
);
register_post_type( 'property', $args );
}
add_action( 'init', 'property_post_type', 0 );
/****************************************
* Add custom taxonomy for Property *
****************************************/
add_action('init', 'property_categories_register');
function property_categories_register() {
$labels = array(
'name' => 'Category',
'singular_name' => 'Property Category',
'search_items' => 'Search Property Categories',
'popular_items' => 'Popular Property Categories',
'all_items' => 'All Properties Categories',
'parent_item' => 'Parent Property Category',
'edit_item' => 'Edit Property Category',
'update_item' => 'Update Property Category',
'add_new_item' => 'Add New Property Category',
'new_item_name' => 'New Property Category',
'separate_items_with_commas' => 'Separate properties categories with commas',
'add_or_remove_items' => 'Add or remove properties categories',
'choose_from_most_used' => 'Choose from most used properties categories'
);
$args = array(
'label' => 'Property Categories',
'labels' => $labels,
'public' => false,
'hierarchical' => true,
'show_ui' => true,
'show_in_nav_menus' => true,
'args' => array( 'orderby' => 'term_order' ),
'rewrite' => array( 'slug' => 'property', 'with_front' => true, 'hierarchical' => true ),
'query_var' => true
);
register_taxonomy( 'property_categories', 'property', $args );
}
add_action( 'init', 'property_post_type', 0 );
add_role('seller', 'Seller', array(
'publish_propety' => true,
'edit_property' => true,
'edit_others_property' => false,
'delete_property' => true,
'delete_others_property' => false,
'read_private_property' => true,
'edit_property' => true,
'delete_property' => true,
'read_property' => true,
// more standard capabilities here
'read' => true,
));
if ( current_user_can('seller') && !current_user_can('upload_files') )
add_action('admin_init', 'allow_seller_uploads');
In users admin panel displaying all post...I want to user can publish, delete, edit only their own post only.
Attaching screenshot users admin panel dashboard..
Screen shot of users admin dashboard

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');

I am trying to add category to a custom post but does not work. Why?

My code in functions.php is:
register_post_type('final_access_sites', array(
'public' => true,
'labels' => array(
'name' => 'Post a site',
'add_new' => 'Add new site',
'add_new_item' => 'Add new site',
'edit_item' => 'Update an existing site',
'view_item' => 'View the site',
'all_items' => 'All sites',
),
'taxonomies' => array('category'),
'menu_position' => 30,
'menu_icon' => get_template_directory_uri().'/images/final_post.png',
'supports' => array('thumbnail','title'),
'order' => 'ASC',
));
After adding this code, I don't see category taxonomy in my dashboard for any post. I don't understand why? I have searched about it but didn't find any reason. Please help me to solve this issue.
Use the register_taxonomy_for_object_type function to add a registered taxonomy to a registered Post Type.
add_action('init','add_categories_to_cpt');
function add_categories_to_cpt(){
register_taxonomy_for_object_type('category', 'final_access_sites');
}
Hey maybe you can try this.
It works because it is form a actual project. It has two parts:
First: custom post type and Second: the category for it.
You just have to copy it and change the custom post type Name and the category name
have you and i hope it helps.! :)
function custom_post_type_projekt() {
$labels = array(
'name' => _x( 'Projekt', 'Post Type General Name', 'projekt' ),
'singular_name' => _x( 'Projekt', 'Post Type Singular Name', 'projekt' ),
'menu_name' => __( 'Projekte', 'projekt' ),
'parent_item_colon' => __( 'Eltern-Element:', 'projekt' ),
'all_items' => __( 'Alle Projekte', 'projekt' ),
'view_item' => __( 'Projekt ansehen', 'projekt' ),
'add_new_item' => __( 'Neues Projekt hinzufügen', 'projekt' ),
'add_new' => __( 'Neues Projekt', 'projekt' ),
'edit_item' => __( 'Projekt bearbeiten', 'projekt' ),
'update_item' => __( 'Projekt aktualisieren', 'projekt' ),
'search_items' => __( 'Projekt suchen', 'projekt' ),
'not_found' => __( 'Projekt nicht gefunden', 'projekt' ),
'not_found_in_trash' => __( 'Projekt nicht im Papierkorb gefunden', 'projekt' ),
);
$args = array(
'label' => __( 'Projekte', 'projekt' ),
'description' => __( 'Hier können beliebig viele Projekte angelegt werden', 'projekt' ),
'labels' => $labels,
'supports' => array( 'title', 'editor', 'thumbnail', 'trackbacks', 'custom-fields', ),
// 'taxonomies' => array( 'category' ),
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_admin_bar' => true,
'menu_position' => 5,
'menu_icon' => 'dashicons-media-document',
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => true,
'publicly_queryable' => true,
'rewrite' => false,
'capability_type' => 'post',
);
register_post_type( 'projekt', $args );
}
// Hook into the 'init' action
add_action( 'init', 'custom_post_type_projekt', 0 );
function my_taxonomies_product() {
$labels = array(
'name' => _x( 'Projektkategorien', 'taxonomy general name' ),
'singular_name' => _x( 'Projektkategorien', 'taxonomy singular name' ),
'search_items' => __( 'Suche Projekt Kategorien' ),
'all_items' => __( 'Alle Projektkategorien' ),
'parent_item' => __( 'Parent Projektkategorien' ),
'parent_item_colon' => __( 'Parent Projektkategorien:' ),
'edit_item' => __( 'Edit Projektkategorien' ),
'update_item' => __( 'Update Projektkategorien' ),
'add_new_item' => __( 'Neu Projektkategorie hinzufügen' ),
'new_item_name' => __( 'Neue Projekt Kategorie' ),
'menu_name' => __( 'Projektkategorien' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
);
register_taxonomy( 'projektkategorien', 'projekt', $args );
}
add_action( 'init', 'my_taxonomies_product', 0 );

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