Wordpress - Получите текущих родителей категории

В category.php, как я протестировал бы против категории, имеющей родительскую категорию?

Если родительская категория является A, и подкатегория является B и пользовательскими нагрузками URL для категории B, я хотел бы смочь протестировать, если это имеет родителя A, и выполненный код, если это делает.

Я нашел тег get_category_parents, но это, кажется, возвращает список ссылок, а не массив:

get_category_parents($cat, TRUE, ', '));

Даже если я получил массив, я не уверен, что функция php состоит в том, чтобы протестировать против него (php новичок).

Спасибо!

6
задан Matrym 25 June 2010 в 01:23
поделиться

2 ответа

Вы можете использовать функцию cat_is_ancestor_of , чтобы проверить, является ли категория дочерним элементом другой категории. Например, чтобы проверить, является ли текущая категория дочерней по отношению к категории с именем «блог»:

cat_is_ancestor_of(get_cat_id('blog'), get_query_var('cat'))
11
ответ дан 8 December 2019 в 18:32
поделиться

Во-первых, вы должны получить id текущей категории:

$category_id = get_query_var('cat');

Затем вы можете сделать запрос к базе данных, чтобы увидеть, есть ли у нее родитель или нет:

$parent = $wpdb->get_var("SELECT parent FROM ".$wpdb->prefix."term_taxonomy WHERE term_id = $category_id");

Если есть, $parent будет содержать id родителя на один уровень выше и, естественно, его значение должно быть больше 0, поэтому вы можете проверить это следующим образом:

<?php if ($parent > 0 ) : ?>
// do something
<?php endif; ?>

Вы можете использовать $parent как угодно;

$parent_link = get_category_link( $parent );
$parent_name = get_cat_name( $parent );
// etc.

Если вы хотите увидеть, что есть больше высокоуровневых родителей, вы можете сделать то же самое (db запрос) с id родителя или даже написать рекурсивную функцию, которая переходит на верхний уровень. Как я видел в исходном коде, встроенная функция get_category_parents() делает это так.

HTH

2
ответ дан 8 December 2019 в 18:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: