come ottenere il percorso completo della categoria includendo genitore e sottocategorie

6 lug 2022, 05:34:12
Visualizzazioni: 801
Voti: 0

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/.

0
Tutte le risposte alla domanda 2
1

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
8 lug 2022 07:19:53
Commenti

Sei il mio eroe del codice, ancora una volta Sally

Steve Steve
11 lug 2022 04:26:32
0

Se vuoi ottenere il percorso completo della categoria, puoi utilizzare get_term_link(). Quindi il tuo codice dovrebbe cambiare così:

if ( is_archive() ) {
    $term = get_queried_object();
    $full_path = get_term_link($term);
}
8 lug 2022 14:26:27