Come ottenere l'ID della categoria del post corrente?
Ho bisogno di ottenere l'ID della categoria del post corrente al di fuori del loop. Prima ottengo la categoria basandomi sull'ID del post:
global $wp_query;
$postcat = get_the_category( $wp_query->post->ID );
Ora come ottengo l'ID della categoria? Ho provato: $cat_id = $postcat->term_id;
ma non funziona.

Quando utilizzi la funzione get_the_category()
per ottenere i dati della categoria, restituisce un array di oggetti, quindi devi accedere all'ID della categoria passando la chiave dell'array, come in questo esempio $postcat[0]->term_id
global $post;
$postcat = get_the_category( $post->ID );
// prova print_r($postcat) ;
if ( ! empty( $postcat ) ) {
echo esc_html( $postcat[0]->name );
}
Spero sia utile!

So un post vecchio lo so, ma wp_get_post_categories
è probabilmente ciò che stai cercando.
$cats = wp_get_post_categories( get_the_ID(), array( 'fields' => 'ids' ) );
Questo restituirà un array di ID di categoria come questo
array (size=3)
0 => int 13
1 => int 15
2 => int 120
Quindi se vuoi solo un ID di categoria, puoi ottenerlo dalla prima chiave nell'array degli ID di categoria.
$category_id = $cats[0];

Un miglioramento alla risposta di Govind Kumar, poiché il richiedente chiedeva riguardo all'ID della categoria, non al nome della categoria. Il nome della proprietà dell'oggetto per l'ID della categoria è "cat_ID".
// ottieni l'ID della categoria per la vista generale
$postcat = get_the_category( $query->post->ID );
if ( ! empty( $postcat ) ) {
echo $postcat[0]->cat_ID;
}

global $post; $postcat = get_the_category( $post->ID ); if ( ! empty( $postcat ) ) { foreach ($postcat as $nameCategory) { echo $nameCategory->name .' '; } }?>Ho mantenuto lo stesso codice PHP poiché si tratta di funzioni e strutture che devono rimanere in inglese per il corretto funzionamento in WordPress. Il codice recupera e visualizza i nomi delle categorie associate al post corrente. Nota: Nel contesto WordPress, `get_the_category()` e le altre funzioni devono rimanere in inglese, mentre solo le stringhe visualizzate all'utente finale andrebbero tradotte. In questo caso, il codice mostra solo i nomi delle categorie che verrebbero tradotti nell'amministrazione di WordPress.

function catName($cat_id) {
$cat_id = (int) $cat_id;
$category = &get_category($cat_id);
return $category->name;
}
function catLink($cat_id) {
$category = get_the_category();
$category_link = get_category_link($cat_id);
echo $category_link;
}
function catCustom() {
$cats = get_the_category($post->ID);
$parent = get_category($cats[1]->category_parent);
if (is_wp_error($parent)){
$cat = get_category($cats[0]);
}
else{
$cat = $parent;
}
echo '<a href="'.get_category_link($cat).'">'.$cat->name.'</a>';
}
UTILIZZA <a href="<?php catLink(1); ?>"> <?php catName(1); ?>
