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