Как получить полный путь категории, включая родительские и дочерние категории
Как получить полный путь категории, включая подкатегории?
Я использую:
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/
к категориям записей.
Как получить родительскую категорию и подкатегорию, например
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() удаляет завершающий слеш
