come ottenere il percorso completo della categoria includendo genitore e sottocategorie
Come posso ottenere il percorso completo della categoria includendo le sottocategorie?
Sto utilizzando
if ( is_archive() ) {
$term = get_queried_object();
$page_path = $term->slug;
}
https://mandoemedia.com/blog/topic/aaa-1ndustries/beauty/
questo restituisce solo beauty
, non aaa-1ndustries/beauty
.
Come posso ottenere sia la categoria genitore che la sottocategoria, cioè aaa-1ndustries/beauty
?
Il precedente sviluppatore ha aggiunto del codice per prefissare le categorie degli articoli con /blog/topic/
.
Come posso ottenere la categoria genitore e la sottocategoria, ad esempio
aaa-1ndustries/beauty
?
Se intendi l'URL della categoria corrente, che appare come https://example.com/blog/topic/aaa-1ndustries/beauty/
, e vuoi semplicemente estrarre il percorso della categoria dall'URL, prova questo:
$request = $GLOBALS['wp']->request;
$page_path = trim( preg_replace( '#^blog/topic/#', '', $request ), '/' );
Se invece vuoi fare lo stesso per un URL/permalink specifico di una categoria, puoi usare get_category_link()
(o get_term_link()
per tassonomie personalizzate) e parse_url()
:
$cat_id = 123; // modifica il valore con l'ID corretto della categoria
$request = parse_url( get_category_link( $cat_id ), PHP_URL_PATH );
$page_path = trim( preg_replace( '#^/blog/topic/#', '', $request ), '/' );
Ma se invece vuoi ottenere il percorso gerarchico effettivo della categoria, usa get_category_parents()
(o get_term_parents_list()
per tassonomie personalizzate). Ad esempio:
// Usa questo per la tassonomia principale `category`:
$cat_id = get_queried_object_id(); // oppure imposta un ID di categoria specifico
$cat_path = get_category_parents( $cat_id, false, '/', true );
// OPPURE usa questo per tassonomie personalizzate:
$term = get_queried_object(); // oppure imposta un oggetto term specifico
$cat_path = get_term_parents_list( $term->term_id, $term->taxonomy, array(
'separator' => '/',
'link' => false,
'format' => 'slug',
) );
echo trim( $cat_path, '/' ); // trim() rimuove lo slash finale
