Как получить полный путь категории, включая родительские и дочерние категории

6 июл. 2022 г., 05:34:12
Просмотры: 801
Голосов: 0

Как получить полный путь категории, включая подкатегории?

Я использую:

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

https://mandoemedia.com/blog/topic/aaa-1ndustries/beauty/ возвращает только beauty, а не aaa-1ndustries/beauty.

Как получить родительскую категорию и подкатегорию, то есть aaa-1ndustries/beauty?

Предыдущий разработчик добавил код для добавления префикса /blog/topic/ к категориям записей.

0
Все ответы на вопрос 2
1

Как получить родительскую категорию и подкатегорию, например aaa-1ndustries/beauty?

Если вам нужен URL текущей категории, который выглядит как https://example.com/blog/topic/aaa-1ndustries/beauty/, и вы хотите извлечь путь категории из этого URL, попробуйте следующее:

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

Если же вам нужно сделать то же самое для конкретного URL/постоянной ссылки категории, используйте get_category_link() (или get_term_link() для пользовательских таксономий) и parse_url():

$cat_id    = 123; // измените значение на ID нужной категории
$request   = parse_url( get_category_link( $cat_id ), PHP_URL_PATH );
$page_path = trim( preg_replace( '#^/blog/topic/#', '', $request ), '/' );

Но если вам нужно получить иерархический путь категории, используйте get_category_parents() (или get_term_parents_list() для пользовательских таксономий). Например:

// Для стандартной таксономии `category`:
$cat_id   = get_queried_object_id(); // или укажите конкретный ID категории
$cat_path = get_category_parents( $cat_id, false, '/', true );

// Или для пользовательских таксономий:
$term     = get_queried_object(); // или укажите конкретный объект термина
$cat_path = get_term_parents_list( $term->term_id, $term->taxonomy, array(
    'separator' => '/',
    'link'      => false,
    'format'    => 'slug',
) );

echo trim( $cat_path, '/' ); // trim() удаляет завершающий слеш
8 июл. 2022 г. 07:19:53
Комментарии

Ты мой герой кодинга, снова Салли

Steve Steve
11 июл. 2022 г. 04:26:32
0

Если вам нужно получить полный путь категории, вы можете использовать get_term_link(). Таким образом, ваш код должен измениться следующим образом:

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