Вопрос или проблема
Я новичок и пытаюсь отредактировать свою тему.
Мне нужно показать категорию после текста “Указано в:”:
//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()
. Рассмотрим, как правильно интегрировать отображение категории в ваш код, который вы предоставили.
Основные шаги для отображения названия категории
-
Использование функции
get_the_category_list()
:
Эта функция возвращает список категорий для заданного поста в виде строкового значения, что позволяет легко вставить этот список в ваш HTML-код. -
Использование функции
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>' .
__('<b>Listed in: </b>') . $categories_string . '<br>' .
__('<b>Location: </b>') . get_post_meta($post->ID, 'address', true) . '<br>' .
__('<b>Start Date: </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>End Date: </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('Regular event')) {
$post_info .= '
<a class="event_title" href="' . get_permalink($post->ID) . '">' . $post->post_title . '</a><small>' .
__('<b>Listed in: </b>') . $categories_string . '<br>' .
__('<b>Location: </b>') . get_post_meta($post->ID, 'address', true) . '<br>' .
__('<b>Start Date: </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>End Date: </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>';
Объяснение кода
- Получение категорий: Исползуйте
get_the_category($post->ID)
для получения списка категорий текущего поста. - Формирование строки с названиями: Мы собираем названия категорий в массив и объединяем их в строку, используя
implode()
. - Вставка в HTML: Теперь мы подставляем названия категорий в нужное место в вашем HTML-коде.
Заключение
Таким образом, вы сможете отобразить названия категорий на вашем сайте после текста "Listed in:". Убедитесь, что ваш код соответствует стандартам безопасности и производительности, следите за обновлениями WordPress для улучшения функциональности и безопасности вашего проекта.