Исключить конкретную категорию из похожих сообщений - PullRequest
1 голос
/ 08 июня 2019

Исключение определенной категории (ID = 100) из ленты "Связанные сообщения" внизу страниц блога. Дополнительный бонус, если он также может быть исключен из архива боковой панели (не уверен, что они связаны ??)

Я использую WP Theme "TheFox", спрашиваю их - не часть их темы.

Я "думаю", это должно быть сделано в functions.php. Я нашел несколько похожих вопросов и код, но мне не повезло.

Я полный нуб для .php, так что будь осторожен:)

Я нашел несколько других попыток, не повезло. Не регистрируется или не выполняет подачу.

$categories_to_exclude [ 100 ];
$first_cat  = false; 
$categories = get_the_category( $post->ID );
while ( ! empty( $categories ) && false === $first_cat ) {
 if ( in_array($categories[0]->cat_ID, $categories_to_exclude) ) {
  array_shift($categories);
 }
   else {
       $first_cat = $categories[0]->cat_ID;
   }
}

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Используйте приведенный ниже код, он должен работать

    $categories_to_exclude [ 81, 11, 21 ];
$first_cat  = false; 
$categories = get_the_category( $post->ID );
while ( ! empty( $categories ) && false === $first_cat ) {
   if ( in_array($categories[0]->cat_ID, $categories_to_exclude) ) {
      array_shift($categories);
   }
   else {
       $first_cat = $categories[0]->cat_ID;
   }
}

Вы получаете категории с помощью get_the_category.Затем в цикле while вы пропускаете первую категорию, если это 81, и смотрите снова.Если это не 81 (и у вас все еще есть доступные категории), вы присваиваете ему значение $ first_cat и продолжаете.

0 голосов
/ 08 июня 2019

Что я мог бы извлечь из вашего вопроса, так это то, что вы хотите игнорировать одну категорию (может быть больше) в соответствующем почтовом запросе?

использовать следующий код (некоторые пояснения даются в коде в комментариях):

// set the category ID (or multiple category IDs) // you want to ignore in the following array $cats_to_ignore = array( 2 ); $categories = wp_get_post_categories( get_the_ID() ); $category_in = array_diff( $categories, $cats_to_ignore ); // ignore only if we have any category left after ignoring if( count( $category_in ) == 0 ) { $category_in = $categories; } $cat_args = array( 'category__in' => $category_in, 'posts_per_page' => 4, 'orderby' => 'date', 'post__not_in' => array( get_the_ID() ) ); $cat_query = new WP_Query( $cat_args ); while ( $cat_query->have_posts() ) : $cat_query->the_post(); /* just example markup for related posts */ echo '<h2><a href="' . get_the_permalink() . '">' . get_the_title() . '</a></h2>'; endwhile; // reset $post after custom loop ends (if you need the main loop after this point) wp_reset_postdata();

...