В category.php, как я протестировал бы против категории, имеющей родительскую категорию?
Если родительская категория является A, и подкатегория является B и пользовательскими нагрузками URL для категории B, я хотел бы смочь протестировать, если это имеет родителя A, и выполненный код, если это делает.
Я нашел тег get_category_parents, но это, кажется, возвращает список ссылок, а не массив:
get_category_parents($cat, TRUE, ', '));
Даже если я получил массив, я не уверен, что функция php состоит в том, чтобы протестировать против него (php новичок).
Спасибо!
Вы можете использовать функцию cat_is_ancestor_of
, чтобы проверить, является ли категория дочерним элементом другой категории. Например, чтобы проверить, является ли текущая категория дочерней по отношению к категории с именем «блог»:
cat_is_ancestor_of(get_cat_id('blog'), get_query_var('cat'))
Во-первых, вы должны получить 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