Проверьте в Wordpress, принадлежат ли опубликованные посты категории - PullRequest
0 голосов
/ 10 июня 2019

Я хочу проверить, принадлежат ли мои оппоненты одной из моих категорий, которые я также отображал на странице поста.Если сообщение относится к одной из моих категорий, то я хочу добавить стиль для заголовка категории (цвет: красный;).Итак, я создал следующий код:

 <?php
$arg = array(
    'orderby'       => 'name',
    'order'         => 'ASC',
    'post_type'     => 'product',
    'post_per_page' => 12,
    'taxonomy'      => 'product_cat',
);
$categories = get_categories($arg);
$post_id = get_the_ID();

?>
<?php foreach ($categories as $category) : ?>
    <a href="<?php echo get_category_link($category); ?>" class="test">
        <span class="name"><?php echo $category->name; ?></span>
    </a>
    <?php $x =$category->term_id  ?>
    
}
 ?>
<?php endforeach; // $categories as $category ?>
 
 
 
 

Я получил ID сообщения и ID категории, но мне не удалось получить то, что я хочу.Я полагаю, что, вероятно, я должен использовать in_category.Кто знает как решить проблему?

1 Ответ

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

Вы можете попробовать что-то вроде этого:

  1. Создайте класс CSS в своем основном файле CSS, который имеет нужный вам стиль

    .red {
    color: red;
    }
    
  2. Настройте цикл for так, чтобы он включал переменную, содержащую идентификатор или массив идентификаторов для категорий, по которым вы хотите проверить.А также текущий идентификатор категории.Кроме того, добавьте переменную с пустой строкой, которую мы можем использовать для добавления в качестве класса к вашему диапазону позже.

    $current_cat_id = $category->term_id;
    $check_cat_id = array(122,178); // Add the ID or IDs of the categories you want to check against
    $red_class = ''; // An empty string var we'll use for the span class below
    
  3. Затем проверьте текущий идентификатор термина после массиватерминыЕсли он существует в массиве, вы изменяете переменную класса на свое имя класса CSS.

    /* Check to see if the current cat ID matches to the one you want to check for */
    
      if (in_array($current_cat_id, $check_cat_id)) {
    
        // Put the class name of the CSS class you create as this string
    
        $red_class = 'red'; 
    
      } 
    
  4. Наконец, откройте переменную класса в своем диапазоне.Если оператор IF равен true, он будет отображать имя вашего класса, если нет, он не добавит этот класс в диапазон.

    <span class="name <?php echo $red_class; ?>"><?php echo $category->name; ?></span>
    

Вот все вместе:

    <?php
    $arg = array(
    'orderby'       => 'name',
    'order'         => 'ASC',
    'post_type'     => 'product',
    'post_per_page' => 12,
    'taxonomy'      => 'product_cat',
    );

    $categories = get_categories($arg);
    $post_id = get_the_ID();

    ?>

    <?php foreach ($categories as $category) : ?>

     $current_cat_id = $category->term_id;
     $check_cat_id = array(122); // Add the ID or IDs of the categories you want to check against
     $red_class = ''; // An empty string var we'll use for the span class below

/* Check to see if the current cat ID matches to the one you want to check for */

     if (in_array($current_cat_id, $check_cat_id)) {

        // Put the class name of the CSS class you create as this string

        $red_class = 'red'; 
     }

    <a href="<?php echo get_category_link($category); ?>" class="test">

    /* Echo the red_class var in the span class so that if it's matched it will have the class you assign */

    <span class="name <?php echo $red_class; ?>"><?php echo $category->name; ?></span>
    </a>


   }
   ?>
   <?php endforeach; // $categories as $category ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...