0

I'm trying to get the category ID so I can call a loop query on only that category ID. However the following code returns null. Any ideas why? In the admin bar it shows edit category with an ID of 3, however I need this ID to be generated dynamically.

$categories = get_the_category();
$category_id = $categories[0]->cat_ID;
var_dump($category_id);

This category is generated from a custom post type.

I used this to get the category ID:

$category = get_category( get_query_var( 'cat' ) );
$cat_id = $category->cat_ID; 

EDIT: I registered the custom post type like this:

// 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 );
  • Are you sure your custom post type is using Core "categories" and not a custom taxonomy? Can you please add the code that registers the CPT and taxonomy? – WebElaine Apr 18 at 14:37
  • @WebElaine I have updated the q – m33bo Apr 18 at 14:59
1

get_the_category retrieve array of post categories.

This tag may be used outside the loop by passing a post id as the parameter.

The syntax is

$categories = get_the_category(  $post_id  ); // Outside the loop

// OR

$categories = get_the_category( ); // Inside the loop

Note: This function only returns results from the default “category” taxonomy. For custom taxonomies use get_the_terms() .

$categories = get_the_terms( $post_id, 'taxonomy' );

I hope this may help.

0

I used this to get the category ID.

$category = get_category( get_query_var( 'cat' ) );
$cat_id = $category->cat_ID; 
  • This does not seem to be the answer to your question. Can you please add this to your question? – Sven Apr 18 at 14:27

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.