Вопрос или проблема
Я довольно нов в WordPress и мне нужна помощь. Я создаю веб-сайт, который содержит статьи. На каждой странице статьи я хочу показывать информацию о писателе (изображение, имя и краткое описание).
Я создал пользовательский тип записи под названием ‘articles’, теперь я хочу выбрать информацию о писателе на странице записи статьи, скажем, из мета-бокса…
Я также создал другой пользовательский тип записи под названием ‘writers’, где находятся все данные о писателях. Теперь у меня вопрос: как мне это сделать? Как мне показать данные из CPT писателей в CPT статей?
Я нашел этот учебник, но он, похоже, не то, что мне нужно. Я установил плагин CPT-onomies, и теперь вижу мета-бокс с выпадающим списком, который содержит все CPT ‘writers’. Как заставить данные отображаться на фронтэнде записи статьи?
Любой учебник или подсказка будут полезны.
Это не решает ваш вопрос о том, как показать пользовательский тип записи внутри другого пользовательского типа записи, но почему бы вам не использовать шаблон автора? Вы можете настроить пользователей для ваших писателей и выбрать этого пользователя для каждой записи. Вы даже можете использовать Advanced Custom Fields для добавления пользовательских полей в профиль пользователя.
Если вы не используете Gutenberg в CPT статьи, вы можете легко решить эту проблему за 5 минут, используя плагин PIKLIST. С другой стороны, вы также можете решить это, создав пользовательский мета-бокс, где ваш список писателей будет отображаться в качестве HTML поля выбора. Дайте знать, если вам нужна дальнейшая помощь.
Ответ или решение
Введение
Создание сайта на WordPress с кастомными типами записей (CPT) предоставляет разработчикам гибкость в организации контента. В данном случае мы рассматриваем ситуацию, в которой необходимо интегрировать информацию о писателях (кастомный тип записей ‘writers’) в страницу статьи (кастомный тип записей ‘articles’). Данная задача может быть решена с помощью метабоксов и пользовательских полей.
Шаг 1: Создание Кастомного Метабокса
Для начала создайте метабокс, который позволит пользователям выбирать писателя при создании записи статьи. Используйте следующий код в вашем файле functions.php:
function add_writer_meta_box() {
add_meta_box(
'writer_meta_box', // ID метабокса
'Выберите писателя', // Заголовок метабокса
'display_writer_meta_box', // Функция отображения
'articles' // Кастомный тип записи
);
}
add_action('add_meta_boxes', 'add_writer_meta_box');
function display_writer_meta_box($post) {
$writers = get_posts(array('post_type' => 'writers', 'numberposts' => -1));
$selected_writer = get_post_meta($post->ID, 'selected_writer', true);
echo '<select name="selected_writer">';
echo '<option value="">Выберите писателя</option>';
foreach ($writers as $writer) {
echo '<option value="' . $writer->ID . '"' . selected($selected_writer, $writer->ID, false) . '>' . $writer->post_title . '</option>';
}
echo '</select>';
}
function save_writer_meta_box($post_id) {
if (array_key_exists('selected_writer', $_POST)) {
update_post_meta($post_id, 'selected_writer', $_POST['selected_writer']);
}
}
add_action('save_post', 'save_writer_meta_box');
Шаг 2: Отображение Информации Писателя на Странице Статьи
Теперь, когда вы сохранили информацию о выбранном писателе в метабоксе, следующим шагом будет отображение этой информации на фронтенде. Используйте следующий код в файле single-articles.php:
$selected_writer_id = get_post_meta(get_the_ID(), 'selected_writer', true);
if ($selected_writer_id) {
$writer = get_post($selected_writer_id);
if ($writer) {
echo '<h2>Информация о писателе</h2>';
echo '<h3>' . esc_html($writer->post_title) . '</h3>';
echo '<div>' . apply_filters('the_content', $writer->post_content) . '</div>';
// Вы можете добавить изображение, если оно сохранено в пользовательских полях
$writer_image = get_post_meta($writer->ID, 'writer_image', true);
if ($writer_image) {
echo '<img src="' . esc_url($writer_image) . '" alt="' . esc_attr($writer->post_title) . '">';
}
}
}
Шаг 3: Проверка и Тестирование
После реализации кода проверьте работу вашего метабокса и отображение информации на frontend. Убедитесь, что при выборе писателя в метабоксе информация корректно отображается на странице статьи.
Заключение
Интеграция кастомных типов записей в WordPress может быть достаточно простой задачей, если следовать четкой структуре. Использование метабоксов для выбора писателя и отображение информации на страницах статей создаёт удобный интерфейс как для администраторов, так и для пользователей сайта. Этот метод не только улучшает навигацию по контенту, но и способствует улучшению пользовательского опыта. При необходимости вы можете расширять функционал, например, добавив дополнительные поля в метабокс или изменив логику отображения информации о писателе.