Вопрос или проблема
Я использую WordPress 5.9+ и создание пользовательских типов записей стало относительно легким. Но наличие целевой страницы для пользовательского типа записи – это новая задача для меня.
- Я успешно создал пользовательский тип записи под названием Career Finders
- Я создал шаблон архива для этого пользовательского типа записи, названный
archive-career-finders.php
- Я вижу, что этот шаблон используется в браузере, когда я перехожу по своему локальному URL
my-site.com/career-finders
Но как нам создать страницу или запись через WP-админ, которая будет связана с этим шаблоном архива и “будет” целевой страницей для пользовательского типа записи?
Я хочу, чтобы редакторы могли добавлять контент на эту целевую страницу через wp-admin. Здесь я застрял…
Моя первоначальная мысль:
На этом новом шаблоне архива, нужно ли мне использовать цикл WP-Query, чтобы получить эту “1” страницу или запись, которая представляет собой необходимый контент для отображения здесь, и также сделать эту страницу Частной? Это правильный подход?
Большое спасибо!
Если я правильно понимаю ваш вопрос, вы ищете шаблоны. Скопируйте ваш single.php
или page.php
из вашей темы, а затем переименуйте его в single-career-finders.php
.
Это то же самое, что вы должны были сделать и для вашей страницы архива… Возьмите файл archive.php
из вашей темы, скопируйте его и переименуйте в archive-career-finders.php
. В нем будет соответствующий запрос, чтобы извлекать ваши пользовательские записи, но вы также можете изменить контент. Вам не нужно добавлять отдельный WP_Query
здесь.
Теперь отредактируйте этот файл, и у вас будет индивидуальная презентация для ваших данных, отделенная от обычных страниц, записей или других пользовательских типов записей.
Эта страница содержит отличное объяснение того, как работают шаблоны в WordPress:
https://developer.wordpress.org/themes/basics/template-hierarchy/
После некоторых раздумий, я принимаю следующий подход
- В области моего пользовательского типа записи в wp-admin/ создаю публичную запись, которая представляет содержимое для моей целевой страницы пользовательского типа записи. Эта запись находится по адресу
my-site.com/career-finders/landing-content
- В области дочерней темы устанавливаю код, чтобы скрыть эту запись от страниц Архива, результатов поиска, RSS-ленты и блогов. Эта статья вдохновила меня на этот процесс.
- Внутри моего шаблона
archive-career-finders.php
извлекаю данные из моей страницы/landing-content
с помощьюsetup_postdata($p);
, вдохновляясь этой записью - Теперь, когда пользователь заходит на
my-site.com/career-finders
, он увидит содержимое целевой страницы для моего пользовательского типа записи.
Это, по моему мнению, самый простой способ позволить редактору wp-admin добавлять контент в запись, которая связана с пользовательским шаблоном архива для пользовательского типа записи.
Ответ или решение
Для создания страницы лендинга для вашего пользовательского типа записи (CPT) в WordPress, следуя вашим требованиям и предоставленной информации, вы можете использовать следующий подход:
Шаг 1: Создание Поста для Лендинга
- Добавьте новый Пост в области пользовательского типа записи (CPT) вашего администрирования. Это пост будет представлять контент для вашего лендинга. Например, вы можете создать пост с заголовком "Контент для Карьерных Поисков".
- Убедитесь, что данный пост будет доступен по URL:
my-site.com/career-finders/landing-content
.
Шаг 2: Скрытие Поста от Архивов и Поиска
Чтобы скрыть созданный пост из архивов, результатов поиска и других секций вашего сайта, вы можете воспользоваться следующими методами:
- Используйте Плагины: Существует множество плагинов, которые позволяют скрывать посты или страницы. Например, плагин "WP Hide Post" может помочь вам с этой задачей.
-
Добавьте Код в Файл functions.php: Вы можете использовать следующий код, чтобы скрыть пост с определенным ID (скажем, ID вашего поста равен
123
):function hide_post_from_search($query) { if ($query->is_search) { $query->set('post__not_in', array(123)); } return $query; } add_filter('pre_get_posts', 'hide_post_from_search');
Шаг 3: Изменение archive-career-finders.php
В вашем archive-career-finders.php
добавьте следующий код, чтобы вызвать данные из вашего поста лендинга:
<?php
// Запрос поста контента landing-content
$landing_post = get_page_by_path('career-finders/landing-content');
// Проверка, существует ли пост
if ($landing_post) {
setup_postdata($landing_post);
?>
<div class="landing-content">
<h1><?php the_title(); ?></h1>
<div><?php the_content(); ?></div>
</div>
<?php
wp_reset_postdata();
}
?>
Шаг 4: Тестирование
Теперь, когда вы перейдете на my-site.com/career-finders
, вы должны увидеть контент, который вы добавили в ваш пост лендинга. Это позволит редакторам легко управлять содержимым страницы через стандартный интерфейс WordPress.
Заключение
Этот подход позволяет вам создать лендинг для вашего пользовательского типа записи с возможностью редактирования через WP-admin. Вы можете использовать стандартные функции WordPress, чтобы динамически извлекать контент, что также улучшает его управляемость и SEO-оптимизацию за счет использования стандартных механизмов платформы. Обратите внимание на то, что лучше всего использовать пользовательскую таксономию или метаданные для дальнейшего улучшения функциональности вашего лендинга, если это необходимо в будущем.