I have created a theme with a custom post type called 'project' and there is a problem. I want to show 5 different custom post type categories on a page in different portions, like posts to show on pages from their respective categories. Is there any solution?
This is my custom post type code with custom taxonomy
<?php
/**
* Registers a custom post type.
*/
function Project_post_type()
{
register_post_type(
'Project',
array(
'labels' => array(
'name' => __('Project', 'text_domain'),
'singular_name' => __('Project', 'text_domain'),
'menu_name' => __('Project', 'text_domain'),
'name_admin_bar' => __('Project Item', 'text_domain'),
'all_items' => __('All Items', 'text_domain'),
'add_new' => _x('Add New', 'prefix_portfolio', 'text_domain'),
'add_new_item' => __('Add New Item', 'text_domain'),
'edit_item' => __('Edit Item', 'text_domain'),
'view_item' => __('View Item', 'text_domain'),
'search_items' => __('Search Items', 'text_domain'),
'not_found' => __('No items found.', 'text_domain'),
'not_found_in_trash' => __('No items found in Trash.', 'text_domain'),
'parent_item_colon' => __('Parent Items:', 'text_domain'),
),
'public' => true,
'menu_position' => 5,
'supports' => array(
'title',
'editor',
'thumbnail',
'excerpt',
'custom-fields',
),
'taxonomies' => array(
'Project_categories',
),
'menu_icon' => get_template_directory_uri() . '/img/project-icon.png',
'has_archive' => true,
'query_var' => true,
'rewrite' => array(
'slug' => 'Project',
),
)
);
}
add_action('init', 'Project_post_type');
/**
* Registers a custom taxonomy.
*/
function Project_taxonomy()
{
register_taxonomy(
'Project_categories',
array(
'Project',
),
array(
'labels' => array(
'name' => _x('Categories', 'prefix_portfolio', 'text_domain'),
'singular_name' => _x('Category', 'prefix_portfolio', 'text_domain'),
'menu_name' => __('Categories', 'text_domain'),
'all_items' => __('All Categories', 'text_domain'),
'edit_item' => __('Edit Category', 'text_domain'),
'view_item' => __('View Category', 'text_domain'),
'update_item' => __('Update Category', 'text_domain'),
'add_new_item' => __('Add New Category', 'text_domain'),
'new_item_name' => __('New Category Name', 'text_domain'),
'parent_item' => __('Parent Category', 'text_domain'),
'parent_item_colon' => __('Parent Category:', 'text_domain'),
'search_items' => __('Search Categories', 'text_domain'),
),
'show_admin_column' => true,
'hierarchical' => true,
'rewrite' => array(
'slug' => 'portfolio/category',
),
)
);
}
add_action('init', 'Project_taxonomy', 0);
function theme_prefix_rewrite_flush() {
flush_rewrite_rules();
}
add_action( 'after_switch_theme', 'theme_prefix_rewrite_flush' );
Here is my code to display one category
$args = array(
'post_type' => 'project',
'posts_per_page' => 200,
'cat' => 'Initiatieffase'
);
$loop = new WP_Query($args); while ($loop->have_posts()) : $loop->the_post();
echo '<li><a href="' . the_permalink() . '">' . the_post_thumbnail() . '</a></li>';
endwhile;
wp_reset_query();
EDIT
This is my new post type function
<?php
// Register Custom Post Type
function project_post_type() {
$labels = array(
'name' => _x( 'Projects', 'Post Type General Name', 'text_domain' ),
'singular_name' => _x( 'Project', 'Post Type Singular Name', 'text_domain' ),
'menu_name' => __( 'Project', 'text_domain' ),
'parent_item_colon' => __( 'Parent Item:', 'text_domain' ),
'all_items' => __( 'All Items', 'text_domain' ),
'view_item' => __( 'View Item', 'text_domain' ),
'add_new_item' => __( 'Add New Item', 'text_domain' ),
'add_new' => __( 'Add New', 'text_domain' ),
'edit_item' => __( 'Edit Item', 'text_domain' ),
'update_item' => __( 'Update Item', 'text_domain' ),
'search_items' => __( 'Search Item', 'text_domain' ),
'not_found' => __( 'Not found', 'text_domain' ),
'not_found_in_trash' => __( 'Not found in Trash', 'text_domain' ),
);
$args = array(
'label' => __( 'project_post_type', 'text_domain' ),
'description' => __( 'Project Description', 'text_domain' ),
'labels' => $labels,
'supports' => array( 'title', 'editor', 'thumbnail', ),
'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_icon' => get_template_directory_uri() . '/img/project-icon.png',
'menu_position' => 5,
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'post',
);
register_post_type( 'project_post_type', $args );
}
// Hook into the 'init' action
add_action( 'init', 'project_post_type', 0 );
// Register Custom Taxonomy
function project_taxonomy() {
$labels = array(
'name' => _x( 'Projects', 'Taxonomy General Name', 'text_domain' ),
'singular_name' => _x( 'Project', 'Taxonomy Singular Name', 'text_domain' ),
'menu_name' => __( 'Project', 'text_domain' ),
'all_items' => __( 'All Items', 'text_domain' ),
'parent_item' => __( 'Parent Item', 'text_domain' ),
'parent_item_colon' => __( 'Parent Item:', 'text_domain' ),
'new_item_name' => __( 'New Item Name', 'text_domain' ),
'add_new_item' => __( 'Add New Item', 'text_domain' ),
'edit_item' => __( 'Edit Item', 'text_domain' ),
'update_item' => __( 'Update Item', 'text_domain' ),
'separate_items_with_commas' => __( 'Separate items with commas', 'text_domain' ),
'search_items' => __( 'Search Items', 'text_domain' ),
'add_or_remove_items' => __( 'Add or remove items', 'text_domain' ),
'choose_from_most_used' => __( 'Choose from the most used items', 'text_domain' ),
'not_found' => __( 'Not Found', 'text_domain' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_nav_menus' => true,
'show_tagcloud' => true,
);
register_taxonomy( 'project', array( 'post' ), $args );
}
// Hook into the 'init' action
add_action( 'init', 'project_taxonomy', 0 );
function theme_prefix_rewrite_flush() {
flush_rewrite_rules();
}
add_action( 'after_switch_theme', 'theme_prefix_rewrite_flush' );
and this is template function
<?php
$args = array(
'post_type' => 'project',
'tax_query' => array(
array(
'taxonomy' => 'Initiatieffase',
'field' => 'slug',
'terms' => 'bob'
)
)
);
$query = new WP_Query( $args );
$loop = new WP_Query($args);
while ($loop->have_posts()) : $loop->the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?></a></li>
<?php endwhile; ?>
<?php wp_reset_postdata(); ?>
but its still showing nothing
This is my new post type function
<?php
// Register Custom Post Type
function project_post_type() {
$labels = array(
'name' => _x( 'Projects', 'Post Type General Name', 'text_domain' ),
'singular_name' => _x( 'Project', 'Post Type Singular Name', 'text_domain' ),
'menu_name' => __( 'Project', 'text_domain' ),
'parent_item_colon' => __( 'Parent Item:', 'text_domain' ),
'all_items' => __( 'All Items', 'text_domain' ),
'view_item' => __( 'View Item', 'text_domain' ),
'add_new_item' => __( 'Add New Item', 'text_domain' ),
'add_new' => __( 'Add New', 'text_domain' ),
'edit_item' => __( 'Edit Item', 'text_domain' ),
'update_item' => __( 'Update Item', 'text_domain' ),
'search_items' => __( 'Search Item', 'text_domain' ),
'not_found' => __( 'Not found', 'text_domain' ),
'not_found_in_trash' => __( 'Not found in Trash', 'text_domain' ),
);
$args = array(
'label' => __( 'project_post_type', 'text_domain' ),
'description' => __( 'Project Description', 'text_domain' ),
'labels' => $labels,
'supports' => array( 'title', 'editor', 'thumbnail', ),
'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_icon' => get_template_directory_uri() . '/img/project-icon.png',
'menu_position' => 5,
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'post',
);
register_post_type( 'project_post_type', $args );
}
// Hook into the 'init' action
add_action( 'init', 'project_post_type', 0 );
// Register Custom Taxonomy
function project_taxonomy() {
$labels = array(
'name' => _x( 'Projects', 'Taxonomy General Name', 'text_domain' ),
'singular_name' => _x( 'Project', 'Taxonomy Singular Name', 'text_domain' ),
'menu_name' => __( 'Project', 'text_domain' ),
'all_items' => __( 'All Items', 'text_domain' ),
'parent_item' => __( 'Parent Item', 'text_domain' ),
'parent_item_colon' => __( 'Parent Item:', 'text_domain' ),
'new_item_name' => __( 'New Item Name', 'text_domain' ),
'add_new_item' => __( 'Add New Item', 'text_domain' ),
'edit_item' => __( 'Edit Item', 'text_domain' ),
'update_item' => __( 'Update Item', 'text_domain' ),
'separate_items_with_commas' => __( 'Separate items with commas', 'text_domain' ),
'search_items' => __( 'Search Items', 'text_domain' ),
'add_or_remove_items' => __( 'Add or remove items', 'text_domain' ),
'choose_from_most_used' => __( 'Choose from the most used items', 'text_domain' ),
'not_found' => __( 'Not Found', 'text_domain' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_nav_menus' => true,
'show_tagcloud' => true,
);
register_taxonomy( 'project', array( 'post' ), $args );
}
// Hook into the 'init' action
add_action( 'init', 'project_taxonomy', 0 );
function theme_prefix_rewrite_flush() {
flush_rewrite_rules();
}
add_action( 'after_switch_theme', 'theme_prefix_rewrite_flush' );
and this is template function
<?php
$args = array(
'post_type' => 'project',
'tax_query' => array(
array(
'taxonomy' => 'Initiatieffase',
'field' => 'slug',
'terms' => 'bob'
)
)
);
$query = new WP_Query( $args );
$loop = new WP_Query($args);
while ($loop->have_posts()) : $loop->the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?></a></li>
<?php endwhile; ?>
<?php wp_reset_postdata(); ?>
but its still showing nothing
cat
should be a category ID, not a name or slug. Also, don't usewp_reset_query
, you should usewp_reset_postdata
tax_query
parameters, not category parameters