¿Cómo obtener el ID de categoría del post actual?

30 nov 2016, 06:32:25
Vistas: 122K
Votos: 4

Necesito obtener el ID de categoría del post actual fuera del loop. Primero obtengo la categoría basada en el ID del post:

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

¿Ahora cómo obtengo el ID de la categoría? Intenté: $cat_id = $postcat->term_id; pero no funciona.

0
Todas las respuestas a la pregunta 5
0
16

Cuando usas la función get_the_category() para obtener los datos de la categoría, devuelve un array de objetos, por lo que debes acceder al ID de la categoría pasando la clave del array, así $postcat[0]->term_id

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

// prueba print_r($postcat) ;  

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

¡Espero que esto ayude!

30 nov 2016 06:38:31
0

Entrada antigua lo sé, pero probablemente wp_get_post_categories es lo que necesitas.

$cats = wp_get_post_categories( get_the_ID(), array( 'fields' => 'ids' ) );

Esto devolverá un array de IDs de categorías como este:

array (size=3)
  0 => int 13
  1 => int 15
  2 => int 120

Así que si solo quieres un ID de categoría, puedes obtenerlo de la primera clave en el array de IDs de categorías.

$category_id = $cats[0];
10 sept 2020 09:29:21
0

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

// obtener ID de categoría para vista general
$postcat = get_the_category( $query->post->ID );
if ( ! empty( $postcat ) ) {
 echo $postcat[0]->cat_ID;
}
28 jul 2018 15:05:30
1
-1
global $post;
$postcat = get_the_category( $post->ID );
    if ( ! empty( $postcat ) ) {
       foreach ($postcat  as $nameCategory) {
           echo $nameCategory->name .' ';   
         }                                      
    }?>
7 jul 2018 19:57:58
Comentarios

No responde a la pregunta. El que preguntaba quería el ID de la categoría, no una lista de nombres impresos.

Jacob Peattie Jacob Peattie
8 jul 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>';    
}

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

10 nov 2018 10:10:39
Comentarios

Bienvenido al sitio, @swibo. Esta respuesta podría beneficiarse de un poco más de claridad. Tal vez podrías explicar qué estás haciendo y por qué, así como por qué esto responde a la pregunta original.

butlerblog butlerblog
11 nov 2018 01:57:26