Come ottenere l'ID della categoria del post corrente?

30 nov 2016, 06:32:25
Visualizzazioni: 122K
Voti: 4

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.

0
Tutte le risposte alla domanda 5
0
16

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!

30 nov 2016 06:38:31
0

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];
10 set 2020 09:29:21
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;
}
28 lug 2018 15:05:30
1
-1
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.
7 lug 2018 19:57:58
Commenti

Non risponde alla domanda. Chi ha posto la domanda voleva l'ID della categoria, non un elenco di nomi stampato.

Jacob Peattie Jacob Peattie
8 lug 2018 09:25:23
1
-1
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); ?>

10 nov 2018 10:10:39
Commenti

Benvenuto nel sito, @swibo. Questa risposta potrebbe essere un po' più chiara. Forse potresti spiegare cosa stai facendo e perché, oltre a come risponde alla domanda originale.

butlerblog butlerblog
11 nov 2018 01:57:26