Cum obții ID-ul categoriei pentru articolul curent?

30 nov. 2016, 06:32:25
Vizualizări: 122K
Voturi: 4

Am nevoie să obțin ID-ul categoriei articolului curent în afara buclei. Mai întâi obțin categoria pe baza ID-ului articolului:

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

Acum cum obțin ID-ul categoriei? Am încercat: $cat_id = $postcat->term_id; dar nu funcționează.

0
Toate răspunsurile la întrebare 5
0
16

Când folosești funcția get_the_category() pentru a obține datele categoriei, aceasta returnează un array de obiecte, așa că trebuie să accesezi ID-ul categoriei prin transmiterea cheii array-ului, astfel: $postcat[0]->term_id

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

// poți încerca print_r($postcat) ;  

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

Sper că acest lucru te ajută!

30 nov. 2016 06:38:31
0

Postare veche, știu, dar wp_get_post_categories este probabil ceea ce cauți.

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

Aceasta va returna un array cu ID-uri de categorii, astfel:

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

Deci, dacă vrei doar un ID de categorie, îl poți obține din prima cheie din array-ul de ID-uri de categorii.

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

O îmbunătățire a răspunsului lui Govind Kumar, întrucât întrebarea se referă la ID-ul categoriei, nu la numele categoriei. Proprietatea obiectului pentru ID-ul categoriei este "cat_ID".

// obține ID-ul categoriei pentru vizualizare generală
$postcat = get_the_category( $query->post->ID );
if ( ! empty( $postcat ) ) {
 echo $postcat[0]->cat_ID;
}
28 iul. 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 iul. 2018 19:57:58
Comentarii

Nu răspunde la întrebare. Cel care a întrebat a dorit ID-ul categoriei, nu o listă de nume afișate.

Jacob Peattie Jacob Peattie
8 iul. 2018 09:25:23
1
-1
/**
 * Returnează numele unei categorii pe baza ID-ului
 * @param int $cat_id ID-ul categoriei
 * @return string Numele categoriei
 */
function catName($cat_id) {
    $cat_id = (int) $cat_id;
    $category = &get_category($cat_id);
    return $category->name;
}

/**
 * Afișează link-ul unei categorii pe baza ID-ului
 * @param int $cat_id ID-ul categoriei
 */
function catLink($cat_id) {
    $category = get_the_category();
    $category_link = get_category_link($cat_id);
    echo $category_link;
}

/**
 * Afișează un link personalizat către categoria părinte sau directă a postului curent
 */
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>';    
}

FOLOSEȘTE <a href="<?php catLink(1); ?>"> <?php catName(1); ?>

10 nov. 2018 10:10:39
Comentarii

Bine ați venit pe site, @swibo. Acest răspuns ar putea beneficia de un pic mai multă claritate. Poate explicați ce faceți și de ce, precum și de ce acest lucru răspunde la întrebarea inițială.

butlerblog butlerblog
11 nov. 2018 01:57:26