Cum să obții categoriile copil ale unui articol dat
Cum pot obține numele categoriilor copil ale unui articol oarecare?
De exemplu, am slug-ul categoriei - 'motociclete' și am subcategorii pentru aceasta. Așadar, trebuie să obțin numele subcategoriei fiecărui articol care se află în categoria cu slug-ul motociclete. Y2ok

Pentru a obține categoriile copil ale unei categorii părinte date prin slug, folosește o combinație între get_category_by_slug()
și get_categories()
.
Această din urmă funcție va returna un array de obiecte de categorie care se potrivesc cu argumentele de interogare specificate; prima va returna ID-ul unei categorii, având slug-ul acesteia.
De exemplu:
<?php
$motorbike_child_cat_args = array(
'child_of' => get_category_by_slug( 'motorbikes' )
);
$motorbike_child_cats = get_categories( $motorbike_child_cat_args );
?>
Apoi, poți face orice dorești cu array-ul tău de obiecte de categorie. De exemplu, pentru a obține un array cu numele categoriilor copil:
<?php
$motorbike_child_cat_names = array();
foreach ( $motorbike_child_cats as $child_cat ) {
$motorbike_child_cat_names[] = $child_cat->name;
}
?>
Serios, ce faci cu aceste date depinde de tine în acel moment.
EDITARE
Dacă trebuie să obții categoriile copil ale unei articole arbitrare, atunci poți folosi get_the_category()
.
Dacă ești în interiorul Loop-ului, apelează pur și simplu get_the_category()
; dacă ești în afara Loop-ului, atunci trebuie să transmiți ID-ul articolului către apel: get_the_category( $id )
.
De exemplu, pentru a construi un array cu numele categoriilor copil (indiferent de părinte) ale articolului curent:
<?php
$my_post_categories = get_the_category();
$my_post_child_cats = array();
foreach ( $my_post_categories as $post_cat ) {
if ( 0 != $post_cat->category_parent ) {
$my_post_child_cats[] = $post_cat->cat_name;
}
}
?>
Sau, de exemplu, pentru a construi un array cu numele categoriilor copil 'motorbikes' ale articolului curent:
<?php
$my_post_categories = get_the_category();
$motorbikes_child_cats = array();
foreach ( $my_post_categories as $post_cat ) {
if ( 'motorbikes' == $post_cat->category_parent ) {
$motorbikes_child_cats[] = $post_cat->cat_name;
}
}
?>
Este mai aproape de ceea ce cauți?
EDITARE 2
Dacă ai nevoie doar să obții toate categoriile articolului tău:
<?php
$all_post_categories = get_the_category();
$my_post_cats = array();
foreach ( $my_post_categories as $post_cat ) {
$my_post_cats[] = $post_cat->cat_name;
}
?>
Asta îți va oferi toate categoriile pentru articolul curent. Nu am nicio idee cum slug-ul categoriei motorbikes
se încadrează în această întrebare.

Bună, mulțumesc, dar cum pot obține numele subcategoriei pentru $post->ID, deoarece $cat = get_the_category($post->ID); $category_name = $cat->name;
nu funcționează.

Deci, încerci să obții categoriile copil ale unei articole arbitrare, mai degrabă decât categoriile copil ale unei categorii cunoscute, 'motociclete'?

Bună, da dar cum pot să-l afișez? Dacă fac ceva de genul - echo $motorbikes_child_cats[0]; sau echo $my_post_child_cats[0]; va afișa doar gol.

Ce primești cu <?php var_dump( $my_post_child_cats ); ?>
? Dacă este gol, ești sigur că postul tău are de fapt categorii copil?

Bună, returnează NULL, deci înseamnă că nu am subcategorii? Dacă da, atunci cum pot obține numele categoriei pentru postarea mea, dacă slug-ul categoriei este 'motociclete'?

// Obține ID-urile categoriilor asociate postării curente
$categories = wp_get_post_categories( get_the_ID(), array('fields' => 'ids') );
// Argumentele pentru interogarea termenilor de taxonomie
$arguments = array(
'taxonomy' => 'category', // Taxonomia 'categorie'
'childless' => true, // Doar categorii fără subcategorii
'include' => $categories, // Include doar categoriile asociate postării
);
// Obține categoria selectată pe baza argumentelor
$selected_category = get_terms( $arguments );
