Wordpress - Получить родителей текущей категории - PullRequest
6 голосов
/ 25 июня 2010

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

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

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

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

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

Спасибо!

Ответы [ 3 ]

11 голосов
/ 25 июня 2010

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

cat_is_ancestor_of(get_cat_id('blog'), get_query_var('cat'))
2 голосов
/ 25 июня 2010

Сначала вы должны получить идентификатор текущей категории:

$category_id = get_query_var('cat');

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

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

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

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

Вы можете использовать $ parent, как хотите;

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

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

НТН

0 голосов
/ 21 ноября 2012

Проверьте ссылку на страницу для get_category_parents, вы просите ссылки, когда вы установите второй параметр в TRUE

Вы должны делать:.

1008

Я также рекомендую не использовать пробелы в качестве разделителей, так как вы, вероятно, придется урезать эти пробелы позже.

...