#php #wordpress
#php #wordpress
Вопрос:
Отображать дочерние категории без включения родительской категории
Я протестировал несколько функций, которые я видел в Интернете, но ничто не соответствует моим требованиям. Который отображает только заголовки дочерних категорий со своей ссылкой. Например, родительская категория имеет две дочерние категории. Я хочу отобразить эти две подкатегории и применить ссылку для каждой из них, которая ссылается на соответствующую категорию.
Я смог получить сообщения внутри цикла, которые включали миниатюру, заголовок сообщения, выдержку и т. Д. Но мне было трудно достичь того, что мне нужно.
И я нашел это решение в Интернете, которое достигло половины этого.
function the_category_children($slug=""){
if($categories = get_the_category()):
if($slug_category = get_category_by_slug($slug)):
foreach($categories as $category):
echo (cat_is_ancestor_of($slug_category, $category)) ? $category->cat_name : '';
endforeach;
endif;
endif;
}
Приведенная выше функция отображает две нужные мне подкатегории, не включая родительскую категорию. Но не могли бы вы помочь мне, как добавить разделитель для каждой категории, используя эту функцию? А также как правильно добавить ссылку, которая ссылается на название соответствующей категории? У меня есть свой собственный способ добавления ссылки, но я думаю, что это настолько уродливо, что, по-моему, состоит из лишних ненужных кодов.
Я надеюсь, что кто-нибудь может помочь мне достичь этого. Заранее спасибо мастерам! 🙂
Ответ №1:
Я решил свою проблему с помощью этой пользовательской функции, которую я нашел в Интернете, и немного изменил, чтобы соответствовать моим требованиям.
function the_category_children($slug=""){
$separator = ', ';
$output = '';
if($categories = get_the_category()):
if($slug_category = get_category_by_slug($slug)):
foreach($categories as $category):
if (cat_is_ancestor_of($slug_category, $category)):
$output .= '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '">' . esc_html( $category->name ) . '</a>' . $separator;
endif;
endforeach;
echo trim( $output, $separator );
endif;
endif;
}
И вызывая эту функцию the_category_children(‘category_name’) внутри цикла (content.php ). ^_^