Скрытие имен категорий на внешнем интерфейсе, но не на внутреннем, WP сайта

Я использую следующий код, помещенный в functions.php моей темы Wordpress, чтобы скрыть некоторые имена категорий из внешнего интерфейса, которые используются только для организации сообщений и заполнения ползунков:

function the_category_filter($thelist,$separator=' ') {
 // list the IDs of the categories to exclude
 $exclude = array(1,32,42,4);
 // create an empty array
 $exclude2 = array();

 // loop through the excluded IDs and get their actual names
 foreach($exclude as $c) {
      // store the names in the second array
      $exclude2[] = get_cat_name($c);
 }

 // get the list of categories for the current post     
 $cats = explode($separator,$thelist);
 // create another empty array      
 $newlist = array();

 foreach($cats as $cat) {
      // remove the tags from each category
      $catname = trim(strip_tags($cat));

      // check against the excluded categories
      if(!in_array($catname,$exclude2))

      // if not in that list, add to the new array
      $newlist[] = $cat;
 }
 // return the new, shortened list
 return implode($separator,$newlist);
}
// add the filter to 'the_category' tag
add_filter('the_category','the_category_filter', 10, 2);

Проблема в том, что этот код также скрывает те же имена категорий в серверной части. Галочка есть, но названия категорий нет. Поэтому я хотел бы изменить этот код, чтобы администраторы могли видеть имена категорий, спрятанных на веб-интерфейсе. Помощь приветствуется. (PS, я очень новичок в коде, поэтому, пожалуйста, попробуйте описательный, или предложите редактирование: высоко ценится)

1 ответ

Проверьте, загружена ли среда администратора в начале вашей функции, и, если это так, прекратите выполнение, вернув исходный список:

function the_category_filter( $thelist, $separator = '' )
{
    if( is_admin() )
        return $thelist;

    // rest of the code
}
Другие вопросы по тегам