¿Cómo obtener el ID de categoría de la publicación actual?

2

Necesito obtener el ID de categoría de la publicación actual fuera del bucle. Primero obtengo la categoría basada en el ID de publicación:

global $wp_query;
$postcat = get_the_category( $wp_query->post->ID );

Ahora, ¿cómo obtener la identificación de la categoría? Intenté: $cat_id = $postcat->term_id; pero no funciona.

    
pregunta jrcollins 30.11.2016 - 05:32

4 respuestas

9

Cuando usas la función get_the_category() para obtener los datos de la categoría, devuelve la matriz del objeto, por lo que tienes que acceder a la identificación de la categoría al pasar la clave de la matriz, como este $postcat[0]->term_id

global $post;
$postcat = get_the_category( $post->ID );

// try print_r($postcat) ;  

if ( ! empty( $postcat ) ) {
    echo esc_html( $postcat[0]->name );   
}

Espero que esta ayuda!

    
respondido por el Govind Kumar 30.11.2016 - 05:38
0

Una mejora en la respuesta de Govind Kumar, ya que el autor de la pregunta pregunta sobre ID de categoría , no sobre el nombre de categoría . El nombre de propiedad del objeto para el ID de categoría es " cat_ID ".

// get cat ID for general view
$postcat = get_the_category( $query->post->ID );
if ( ! empty( $postcat ) ) {
 echo $postcat[0]->cat_ID;
}
    
respondido por el Jan Desta 28.07.2018 - 14:05
0
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>';    
}

USE <a href="<?php catLink(1); ?>"> <?php catName(1); ?>

    
respondido por el swibo 10.11.2018 - 09:10
-1
global $post;
$postcat = get_the_category( $post->ID );
    if ( ! empty( $postcat ) ) {
       foreach ($postcat  as $nameCategory) {
           echo $nameCategory->name .' ';   
         }                                      
    }?>
    
respondido por el Nguyễn Tiến Dũng 07.07.2018 - 18:57

Lea otras preguntas en las etiquetas