0

I have a custom post type defined like so with taxonomies are standard categories:

// Register Custom Post Type
function custom_post_type() {

$labels = array(
    'name'                  => _x( 'Works', 'Post Type General Name', 'text_domain' ),
    'singular_name'         => _x( 'Work', 'Post Type Singular Name', 'text_domain' ),
    'menu_name'             => __( 'Works', 'text_domain' ),
    'name_admin_bar'        => __( 'Works', 'text_domain' ),
    'archives'              => __( 'Item Archives', 'text_domain' ),
    'attributes'            => __( 'Item Attributes', 'text_domain' ),
    'parent_item_colon'     => __( 'Parent Item:', 'text_domain' ),
    'all_items'             => __( 'All Items', 'text_domain' ),
    'add_new_item'          => __( 'Add New Item', 'text_domain' ),
    'add_new'               => __( 'Add New', 'text_domain' ),
    'new_item'              => __( 'New Item', 'text_domain' ),
    'edit_item'             => __( 'Edit Item', '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'                 => __( 'Work', 'text_domain' ),
    'description'           => __( 'Work Description', 'text_domain' ),
    'labels'                => $labels,
    'supports'              => array( 'title', 'editor' ),
    'taxonomies'            => array( 'category', 'post_tag' ),
    'hierarchical'          => false,
    'public'                => true,
    'show_ui'               => true,
    'show_in_menu'          => true,
    'menu_position'         => 5,
    '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',
    'show_in_rest' => true,
);
register_post_type( 'works', $args );

}
add_action( 'init', 'custom_post_type', 0 );

I am trying to list all posts within the post type category. So for example I have illustration as a category so all posts with illustration.

<?php
if(is_category()){
    //get the category
    $category = get_category( get_query_var( 'cat' ) );
    $cat_id = $category->cat_ID; 

    //list all posts by category
    $args = array(
       'post_type' => 'Works', // the post type
       //not sure how to add category id.
    );
// The query
$the_query = new WP_Query( $args );

// The Loop
if ( $the_query->have_posts() ) {
    echo '<h2> List of posts tagged with this tag </h2>';

    echo '<ul>';
    $html_list_items = '';
    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        $html_list_items .= '<li>';
        $html_list_items .= '<a href="' . get_permalink() . '">';
        $html_list_items .= get_the_title();
        $html_list_items .= '</a>';
        $html_list_items .= '</li>';
    }
    echo $html_list_items;
    echo '</ul>';

} else {
    // no posts found
}
?>
0

You can use any of Category Parameters for your WP_Query

  • cat (int) – use category id.
  • category_name (string) – use category slug.
  • category__and (array) – use category id.
  • category__in (array) – use category id.
  • category__not_in (array) – use category id.

    //list all posts by category
    $args = array(
        'post_type' => 'works', // NOT 'Works'
        // Add category id like this.
       'cat' => $cat_id
        );
    
  • 1
    Thanks I knew it was something as simple as that. – m33bo Apr 18 at 16:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.