Ottenere l'ID della categoria dallo slug della categoria (non funzionante)

11 apr 2013, 23:07:41
Visualizzazioni: 26.3K
Voti: 11

Ho trovato questo codice che apparentemente ottiene l'ID della categoria dallo slug della categoria:

  $category = get_category_by_slug('category-name'); 
  $id = $category->term_id;

Ma quando provo ad implementarlo nel seguente codice, non funziona:

<?php
//elenca i termini in una tassonomia personalizzata usando wp_list_categories 

$category = get_category_by_slug('military');

$args = array(
  'taxonomy'     => 'product_cat',
  'orderby'      => 'name',
  'show_count'   => 0,
  'pad_counts'   => 0,
  'hierarchical' => 1,
  'title_li'     => '',
  'depth'        => 2,
  'child_of'     => $category->term_id
);

?>

<ul class="test">
<?php wp_list_categories( $args ); ?>
</ul>

Sto cercando di mostrare solo le categorie figlie di una specifica categoria genitore. Se inserisco direttamente l'ID della categoria per "child_of" allora funziona perfettamente. Ma usando il codice sopra, continua a mostrare tutte le categorie. Sfortunatamente ho bisogno di farlo tramite slug, non tramite ID.

Qualche idea?

0
Tutte le risposte alla domanda 1
5
21

Non puoi usare get_category_by_slug() con una tassonomia personalizzata. Devi usare get_term_by().

$category = get_term_by( 'slug', 'military', 'product_cat' );
11 apr 2013 23:13:48
Commenti

Ah, non me ne ero reso conto. Grazie! Tuttavia, ho provato a sostituire la riga $category = get_category_by_slug... per farla corrispondere a quanto hai scritto sopra, ma ancora non funziona. Devo modificare anche la riga "child_of"?

LBF LBF
11 apr 2013 23:24:10

Puoi fare il dump dell'oggetto $category per verificare che esista. var_dump( $category ); Dopo la chiamata a get_category_by_slug().

Chris_O Chris_O
11 apr 2013 23:28:11

Ho fatto il dump e mi ha restituito questo: object(stdClass)#771 (10) { ["term_id"]=> string(3) "144" ["name"]=> string(31) "Military Bands" ["slug"]=> string(11) "military" ["term_group"]=> string(1) "0" ["avhec_term_order"]=> string(1) "0" ["term_taxonomy_id"]=> string(3) "144" ["taxonomy"]=> string(11) "product_cat" ["description"]=> string(238) "Watch Straps" ["parent"]=> string(1) "0" ["count"]=> string(3) "163" }

LBF LBF
12 apr 2013 01:19:38

Ah! Avevo scritto male "category" nel mio codice quando ho inserito la tua nuova riga. Argh. Sono sempre gli errori stupidi. Grazie -- ha funzionato!

LBF LBF
12 apr 2013 01:30:14

Vedi ad esempio senza usare lettere maiuscole: get_category_by_slug come ottenere l'ID.

Charles Charles
2 giu 2016 17:50:30