Skip to main content
6 of 9
Code in code block
Pieter Goosen
  • 55.4k
  • 23
  • 115
  • 209

custom post types category

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 texonomy

<?php
/**
 * Registers a custom post type.
 *
 * @link http://codex.wordpress.org/Function_Reference/register_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'),
                'new_item'            => __('New 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.
 *
 * @link http://codex.wordpress.org/Function_Reference/register_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();