Cum să obții calea completă a categoriei, inclusiv părintele și subcategoriile

6 iul. 2022, 05:34:12
Vizualizări: 801
Voturi: 0

Cum pot obține calea completă a categoriei, inclusiv subcategoriile?

Eu folosesc

if ( is_archive() ) {
    $term = get_queried_object();
    $page_path = $term->slug;
}

https://mandoemedia.com/blog/topic/aaa-1ndustries/beauty/ returnează doar beauty, nu aaa-1ndustries/beauty.

Cum pot obține atât categoria părinte cât și subcategoria, adică aaa-1ndustries/beauty?

Dezvoltatorul anterior a adăugat niște cod pentru a prefixa categoriile de articole cu /blog/topic/.

0
Toate răspunsurile la întrebare 2
1

Cum pot obține categoria părinte și subcategoria, adică aaa-1ndustries/beauty?

Dacă te referi la URL-ul curent al categoriei, care arată astfel https://example.com/blog/topic/aaa-1ndustries/beauty/, și vrei să obții doar calea categoriei din acel URL, atunci încearcă asta:

$request   = $GLOBALS['wp']->request;
$page_path = trim( preg_replace( '#^blog/topic/#', '', $request ), '/' );

Și dacă vrei să faci același lucru pentru un URL/permalink specific al unei categorii, poți folosi get_category_link() (sau get_term_link() pentru taxonomii personalizate) și parse_url():

$cat_id    = 123; // schimbă valoarea cu ID-ul corect al categoriei
$request   = parse_url( get_category_link( $cat_id ), PHP_URL_PATH );
$page_path = trim( preg_replace( '#^/blog/topic/#', '', $request ), '/' );

Dar dacă de fapt vrei să obții calea ierarhică reală a categoriei, atunci folosește get_category_parents() (sau get_term_parents_list() pentru taxonomii personalizate). De exemplu:

// Folosește asta pentru taxonomia de bază `category`:
$cat_id   = get_queried_object_id(); // sau setează un ID specific al categoriei
$cat_path = get_category_parents( $cat_id, false, '/', true );

// SAU folosește asta pentru taxonomii personalizate:
$term     = get_queried_object(); // sau setează un obiect termen specific
$cat_path = get_term_parents_list( $term->term_id, $term->taxonomy, array(
    'separator' => '/',
    'link'      => false,
    'format'    => 'slug',
) );

echo trim( $cat_path, '/' ); // funcția trim() elimină slash-ul final/ultimul
8 iul. 2022 07:19:53
Comentarii

Ești eroul meu în codare, din nou Sally

Steve Steve
11 iul. 2022 04:26:32
0

Dacă dorești să obții calea completă a categoriei, poți folosi funcția get_term_link(). Deci codul tău ar trebui să se schimbe astfel:

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