Как показать название “категории”?

Вопрос или проблема

Я новичок и пытаюсь отредактировать свою тему.
Мне нужно показать категорию после текста “Указано в:”:

//echo $todaydate;
if(is_array($rec_dates) && strtolower(trim($is_recurring)) == strtolower(trim('Повторяющееся событие')) && in_array($todaydate,$rec_dates)){ /* если повторяющееся событие */
$c = $counter++;
$recurrence_days = get_post_meta($post->ID,'recurrence_days',true); //в какой день
//  print_r($rec_dates);
$end_date1 = strtotime(date("Y-m-d", strtotime($todaydate)) . " +$recurrence_days день");
$end_date = get_formated_date(date('Y-m-d', $end_date1));
$start_date1 = strtotime(date("Y-m-d", strtotime($todaydate)) . " +$recurrence_days день");
$start_date = get_formated_date(date('Y-m-d', $start_date1));
    $post_info .=' 
    <a class="event_title" href="'.get_permalink($post->ID).'">'.$post->post_title.'</a><small>'.
    __('<b>Указано в: </b>').***какой код здесь, чтобы показать категорию?***.'<br>'.
    __('<b>Место: </b>').get_post_meta($post->ID,'address',true) .'<br>'.
    __('<b>Дата начала: </b>').get_formated_date(get_post_meta($post->ID,'st_date',true)).' '.get_formated_time(get_post_meta($post->ID,'st_time',true)) .'<br />'. 
    __('<b>Дата окончания: </b>').get_formated_date(get_post_meta($post->ID,'end_date',true)).' '.get_formated_time(get_post_meta($post->ID,'end_time',true)) .'</small>';
}else if(strtolower($is_recurring) == strtolower('Регулярное событие')){ /* если регулярное событие */
        $post_info .=' 
    <a class="event_title" href="'.get_permalink($post->ID).'">'.$post->post_title.'</a><small>'.
    __('<b>Указано в: </b>').***какой код здесь, чтобы показать категорию?***.'<br>'.
    __('<b>Место: </b>').get_post_meta($post->ID,'address',true) .'<br>'.
    __('<b>Дата начала: </b>').get_formated_date(get_post_meta($post->ID,'st_date',true)).' '.get_formated_time(get_post_meta($post->ID,'st_time',true)) .'<br />'. 
    __('<b>Дата окончания: </b>').get_formated_date(get_post_meta($post->ID,'end_date',true)).' '.get_formated_time(get_post_meta($post->ID,'end_time',true)) .'</small>';                            
}
endwhile;
$post_info .='</span>';
}

Это может помочь вам получить категории конкретного поста

$catList =get_the_category($post->ID);
foreach($catList as $single){
echo $single->cat_name;
}

Вы также можете ознакомиться с приведёнными ниже ссылками

Чтобы отобразить название категории в вашем коде, вы можете использовать функцию WP get_the_category_list(). Эта функция извлекает категории текущего поста в виде отформатированной строки.

Для получения более подробной информации посетите get_the_category_list

//echo $todaydate;
if(is_array($rec_dates) && strtolower(trim($is_recurring)) == strtolower(trim('Повторяющееся событие')) && in_array($todaydate,$rec_dates)){ /* если повторяющееся событие */
$c = $counter++;
$recurrence_days = get_post_meta($post->ID,'recurrence_days',true); //в какой день
//  print_r($rec_dates);
$end_date1 = strtotime(date("Y-m-d", strtotime($todaydate)) . " +$recurrence_days день");
$end_date = get_formated_date(date('Y-m-d', $end_date1));
$start_date1 = strtotime(date("Y-m-d", strtotime($todaydate)) . " +$recurrence_days день");
$start_date = get_formated_date(date('Y-m-d', $start_date1));
    $post_info .=' 
    <a class="event_title" href="'.get_permalink($post->ID).'">'.$post->post_title.'</a><small>'.
    __('<b>Указано в: </b>').get_the_category_list(', ').'<br>'.
    __('<b>Место: </b>').get_post_meta($post->ID,'address',true) .'<br>'.
    __('<b>Дата начала: </b>').get_formated_date(get_post_meta($post->ID,'st_date',true)).' '.get_formated_time(get_post_meta($post->ID,'st_time',true)) .'<br />'. 
    __('<b>Дата окончания: </b>').get_formated_date(get_post_meta($post->ID,'end_date',true)).' '.get_formated_time(get_post_meta($post->ID,'end_time',true)) .'</small>';
}else if(strtolower($is_recurring) == strtolower('Регулярное событие')){ /* если регулярное событие */
        $post_info .=' 
    <a class="event_title" href="'.get_permalink($post->ID).'">'.$post->post_title.'</a><small>'.
    __('<b>Указано в: </b>').get_the_category_list(', ').'<br>'.
    __('<b>Место: </b>').get_post_meta($post->ID,'address',true) .'<br>'.
    __('<b>Дата начала: </b>').get_formated_date(get_post_meta($post->ID,'st_date',true)).' '.get_formated_time(get_post_meta($post->ID,'st_time',true)) .'<br />'. 
    __('<b>Дата окончания: </b>').get_formated_date(get_post_meta($post->ID,'end_date',true)).' '.get_formated_time(get_post_meta($post->ID,'end_time',true)) .'</small>';                            
}
endwhile;
$post_info .='</span>';
}

Ответ или решение

Для того чтобы отобразить название категории в вашей теме WordPress, необходимо использовать функции, предоставляемые платформой. Вы можете сделать это с помощью функции get_the_category_list() или get_the_category(). Рассмотрим, как правильно интегрировать отображение категории в ваш код, который вы предоставили.

Основные шаги для отображения названия категории

  1. Использование функции get_the_category_list():
    Эта функция возвращает список категорий для заданного поста в виде строкового значения, что позволяет легко вставить этот список в ваш HTML-код.

  2. Использование функции get_the_category():
    Если вам нужно отобразить названия категорий без форматирования, вы можете использовать эту функцию и итерировать по результату.

Пример кода

// Предполагаем, что переменная $post содержит текущий пост.
$catList = get_the_category($post->ID);

// Проверяем, есть ли категории у поста
if (!empty($catList)) {
    $category_names = []; // Массив для названий категорий
    foreach ($catList as $category) {
        $category_names[] = $category->cat_name; // Сохраняем названия категорий
    }
    $categories_string = implode(', ', $category_names); // Объединяем названия в строку через запятую
} else {
    $categories_string = __('Нет категорий'); // Если категорий нет, выводим сообщение
}

// Теперь добавляем HTML-код с названиями категорий
if (is_array($rec_dates) && strtolower(trim($is_recurring)) == strtolower(trim('Recurring event')) && in_array($todaydate, $rec_dates)) {
    $c = $counter++;
    $recurrence_days = get_post_meta($post->ID, 'recurrence_days', true);
    $end_date1 = strtotime(date("Y-m-d", strtotime($todaydate)) . " +$recurrence_days day");
    $end_date = get_formated_date(date('Y-m-d', $end_date1));

    $post_info .= '
    <a class="event_title" href="' . get_permalink($post->ID) . '">' . $post->post_title . '</a><small>' .
    __('&lt;b&gt;Listed in: &lt;/b&gt;') . $categories_string . '<br>' .
    __('&lt;b&gt;Location: &lt;/b&gt;') . get_post_meta($post->ID, 'address', true) . '<br>' .
    __('&lt;b&gt;Start Date: &lt;/b&gt;') . get_formated_date(get_post_meta($post->ID, 'st_date', true)) . ' ' . get_formated_time(get_post_meta($post->ID, 'st_time', true)) . '<br />' . 
    __('&lt;b&gt;End Date: &lt;/b&gt;') . get_formated_date(get_post_meta($post->ID, 'end_date', true)) . ' ' . get_formated_time(get_post_meta($post->ID, 'end_time', true)) . '</small>';
} else if (strtolower($is_recurring) == strtolower('Regular event')) {
    $post_info .= '
    <a class="event_title" href="' . get_permalink($post->ID) . '">' . $post->post_title . '</a><small>' .
    __('&lt;b&gt;Listed in: &lt;/b&gt;') . $categories_string . '<br>' .
    __('&lt;b&gt;Location: &lt;/b&gt;') . get_post_meta($post->ID, 'address', true) . '<br>' .
    __('&lt;b&gt;Start Date: &lt;/b&gt;') . get_formated_date(get_post_meta($post->ID, 'st_date', true)) . ' ' . get_formated_time(get_post_meta($post->ID, 'st_time', true)) . '<br />' . 
    __('&lt;b&gt;End Date: &lt;/b&gt;') . get_formated_date(get_post_meta($post->ID, 'end_date', true)) . ' ' . get_formated_time(get_post_meta($post->ID, 'end_time', true)) . '</small>';
}

endwhile;
$post_info .= '</span>';

Объяснение кода

  • Получение категорий: Исползуйте get_the_category($post->ID) для получения списка категорий текущего поста.
  • Формирование строки с названиями: Мы собираем названия категорий в массив и объединяем их в строку, используя implode().
  • Вставка в HTML: Теперь мы подставляем названия категорий в нужное место в вашем HTML-коде.

Заключение

Таким образом, вы сможете отобразить названия категорий на вашем сайте после текста "Listed in:". Убедитесь, что ваш код соответствует стандартам безопасности и производительности, следите за обновлениями WordPress для улучшения функциональности и безопасности вашего проекта.

Оцените материал
Добавить комментарий

Капча загружается...