Как создать отдельную страницу для архива пользовательских постов в WordPress?
Приветствую! У меня возникла проблема при создании отдельной страницы для архива пользовательских постов в WordPress. Я уже поискал информацию и пробовал разные подходы, но пока не получилось реализовать нужный функционал.
Мне нужно, чтобы на созданной мной странице отображались все посты пользователей, которые они создали с помощью специальной формы на сайте. Форма отправляет данные в пользовательскую таксономию "user_posts", где каждый пост имеет свое уникальное название в поле "post_title".
Я пробовал использовать шаблон архива (archive.php) для отображения списка постов, но он работает только для встроенных типов записей, а мне нужно отобразить только пользовательские посты. Попытался также создать свой шаблон (my_custom_archive.php), но не смог разобраться, как правильно настроить вывод постов из пользовательской таксономии.
Было бы замечательно, если бы вы могли помочь мне с решением данной проблемы. Можете ли вы показать пример кода, каким образом можно создать отдельную страницу для архива пользовательских постов и правильно настроить вывод? Буду очень благодарен за вашу помощь!
'user_post', // имя пользовательского типа записи
'posts_per_page' => -1 // количество постов на странице, -1 для вывода всех постов
);
$custom_query = new WP_Query($args);
// Цикл для вывода постов
if ($custom_query->have_posts()) {
while ($custom_query->have_posts()) {
$custom_query->the_post();
// Вывод нужной информации о посте
echo '' . get_the_title() . '
';
echo '' . get_the_content() . '';
}
}
// Восстанавливаем данные глобальной переменной $post
wp_reset_postdata();
?>
Заранее благодарен за вашу помощь и с нетерпением жду ответа!
Ответы:
function create_custom_post_type() {
$args = array(
'public' => true,
'labels' => array(
'name' => 'Пользовательские посты',
'singular_name' => 'Пользовательский пост',
),
'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'custom-fields'),
);
register_post_type('user_post', $args);
}
add_action('init', 'create_custom_post_type');
Здесь мы создаем пользовательский тип записи с названием "Пользовательские посты" и единственной записью "Пользовательский пост". Вы также можете добавить любую другую необходимую поддержку записи в массив 'supports'.
Далее, вам нужно создать пользовательскую таксономию для классификации ваших пользовательских постов. Вы можете сделать это с помощью функции register_taxonomy(). Также добавьте этот код в файл functions.php вашей темы или в файл плагина:
function create_custom_taxonomy() {
$args = array(
'hierarchical' => true,
'labels' => array(
'name' => 'Категории пользовательских постов',
'singular_name' => 'Категория пользовательского поста',
),
);
register_taxonomy('user_category', 'user_post', $args);
}
add_action('init', 'create_custom_taxonomy');
Здесь мы создаем таксономию с названием "Категории пользовательских постов" и единственной категорией "Категория пользовательского поста".
Теперь, когда у нас есть пользовательский тип записи и пользовательская таксономия, мы можем создать отдельную страницу для архива пользовательских постов. Для этого вам понадобится создать шаблон страницы. Создайте новый файл с названием my_custom_archive.php и добавьте в него следующий код:
'user_post', // имя пользовательского типа записи
'posts_per_page' => -1 // количество постов на странице, -1 для вывода всех постов
);
$custom_query = new WP_Query($args);
// Цикл для вывода постов
if ($custom_query->have_posts()) {
while ($custom_query->have_posts()) {
$custom_query->the_post();
// Вывод нужной информации о посте
echo '' . get_the_content() . '';
}
}
// Восстанавливаем данные глобальной переменной $post
wp_reset_postdata();
?>
В этом шаблоне мы используем WP_Query для получения всех пользовательских постов и выводим их с помощью цикла while. Вы можете настроить параметры запроса, добавив или изменив аргументы в массиве $args.
После создания файла шаблона, вы можете создать страницу в административной панели WordPress и выбрать этот шаблон в поле "Шаблон страницы". После публикации страницы, вы сможете просмотреть отдельную страницу для архива пользовательских постов, на которой будут отображены все посты, созданные с помощью формы на сайте.
Надеюсь, этот пример кода поможет вам создать отдельную страницу для архива пользовательских постов и настроить вывод. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться. Удачи в разработке вашего сайта на WordPress!
$args = array(
'post_type' => 'user_post', // имя пользовательского типа записи
'posts_per_page' => -1 // количество постов на странице, -1 для вывода всех постов
);
$custom_query = new WP_Query($args);
// Цикл для вывода постов
if ($custom_query->have_posts()) {
while ($custom_query->have_posts()) {
$custom_query->the_post();
// Вывод нужной информации о посте
echo '<h2>' . get_the_title() . '</h2>';
echo '<div>' . get_the_content() . '</div>';
}
}
// Восстанавливаем данные глобальной переменной $post
wp_reset_postdata();
Вы можете вставить этот код в ваш файл "my_custom_archive.php". Он создает новый объект WP_Query с использованием аргументов, указанных в массиве $args. Затем он запускает цикл для вывода каждого поста из пользовательской таксономии "user_post". Внутри цикла выводится нужная информация о каждом посте, такая как заголовок и содержимое.
Не забудьте восстановить данные глобальной переменной $post с помощью функции wp_reset_postdata() после завершения цикла.
Надеюсь, этот пример кода поможет вам создать отдельную страницу для архива пользовательских постов и правильно настроить вывод. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их. Желаю вам успеха!
<?php
/*
Template Name: Архив пользовательских постов
*/
// Запрашиваем пользовательские посты
$args = array(
'post_type' => 'user_post', // имя пользовательского типа записи
'posts_per_page' => -1 // количество постов на странице, -1 для вывода всех постов
);
$custom_query = new WP_Query($args);
// Цикл для вывода постов
if ($custom_query->have_posts()) {
while ($custom_query->have_posts()) {
$custom_query->the_post();
// Вывод нужной информации о посте
echo '<h2>' . get_the_title() . '</h2>';
echo '<div>' . get_the_content() . '</div>';
}
}
// Восстанавливаем данные глобальной переменной $post
wp_reset_postdata();
?>
3. Теперь в панели администратора WordPress создайте новую страницу и выберите шаблон "Архив пользовательских постов", который мы создали в предыдущем шаге.
4. Сохраните страницу и опубликуйте ее.
Теперь, когда вы откроете эту страницу в браузере, вы увидите список всех пользовательских постов, которые были созданы с помощью специальной формы на вашем сайте.
Надеюсь, этот пример кода поможет вам создать отдельную страницу для архива пользовательских постов в WordPress. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать!