Hidde определенную категорию из почтовой мета

Это мой код для показа категорий в метатете:

$categories_list = get_the_category_list( ', ', 'ixn' ); printf( '<span class="cat-links">' . ( 'Category: %1$s', 'ixn' ) . '</span>', $categories_list ); 

('ixn' – название темы)

Есть ли простой способ скрыть определенную категорию, называемую «сайтом», из категорий, которые появляются в метатеге сообщения?

Я прочитал эти предполагаемые решения, но они могут быть чрезмерными для того, что мне нужно, и не очень хорошо соответствуют моему коду, поскольку они не используют get_the_category_list :

  • Скрыть определенное название категории без его удаления?
  • https://rockingwplikeapro.com/hide-category-names-from-display-in-wordpress-theme/
  • https://www.webhostinghero.com/exclude-specific-categories-from-the-meta-info-in-wordpress/

Solutions Collecting From Web of "Hidde определенную категорию из почтовой мета"

Из быстрого просмотра связанных функций я не думаю, что есть тот, который извлекает термины для сообщения и допускает явное исключение.

Однако есть удобный фильтр the_category_list прямо внутри функции, которую вы используете, с массивом объектов категории, прежде чем они the_category_list в вывод HTML.

Это должно быть очень подходящим местом для проверки массива и исключения категории, которую вы хотите пропустить. Как всегда старайтесь только добавлять свой фильтр в требуемом контексте или проверять контекст внутри него.

Это код, который сработал. Хотя он перехватывает the_category а не в the_category_list или get_the_categoty_list она работает безупречно.

 function the_category_filter($thelist,$separator=' ') { if(!defined('WP_ADMIN')) { //list the category names to exclude $exclude = array('Mac','Windows'); $cats = explode($separator,$thelist); $newlist = array(); foreach($cats as $cat) { $catname = trim(strip_tags($cat)); if(!in_array($catname,$exclude)) $newlist[] = $cat; } return implode($separator,$newlist); } else return $thelist; } add_filter('the_category','the_category_filter',10,2); 

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

 if ( is_single() ) { // Above code goes here } 

PS: Мне все еще интересно, есть ли более тонкое решение. Например, используя в моем коде что-то вроде: get_the_categories_list('exclude=1,22') .