Как создать пользовательскую страницу с отображением записей, добавленных в избранное на WordPress?
Добрый день! Мне нужна помощь с созданием пользовательской страницы на WordPress, на которой будут отображаться записи, добавленные в избранное. Я создал пользовательское поле "Избранное" для записей и хочу, чтобы на странице отображались только те записи, у которых это поле отмечено.
Вот пример кода, где я нуждаюсь в помощи:
$args = array(
'post_type' => 'post',
'meta_key' => 'favorite',
'meta_value' => 'yes'
);
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
// Выводим информацию о записи
the_title();
the_content();
}
}
wp_reset_postdata();
Буду очень благодарен за помощь в решении этой задачи! Спасибо заранее!
Ответы:
Для того, чтобы отображать только записи, у которых поле "Избранное" отмечено, тебе нужно использовать параметры 'meta_key' и 'meta_value' в запросе WP_Query.
В твоем примере кода уже есть эти параметры. Однако, перед началом цикла, ты должен добавить код, который проверяет, что пользователь авторизован и получает значения его избранных записей. Ниже приведен обновленный код:
// Проверяем, что пользователь авторизован
if (is_user_logged_in()) {
// Получаем текущего пользователя
$current_user = wp_get_current_user();
// Получаем значение его избранных записей
$favorite_posts = get_user_meta($current_user->ID, 'favorite', true);
// Проверяем, что есть избранные записи
if (!empty($favorite_posts)) {
$args = array(
'post_type' => 'post',
'post__in' => $favorite_posts
);
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
// Выводим информацию о записи
the_title();
the_content();
}
}
wp_reset_postdata();
} else {
echo 'Нет избранных записей';
}
} else {
echo 'Пользователь не авторизован';
}
В этом обновленном коде мы сначала проверяем, что пользователь авторизован с помощью функции is_user_logged_in(). Затем мы получаем текущего пользователя с помощью функции wp_get_current_user() и его избранные записи с помощью функции get_user_meta(). Затем мы проверяем, есть ли избранные записи и если есть, то добавляем параметр 'post__in' в массив аргументов WP_Query, чтобы получить только эти записи.
Также, я добавил сообщение "Нет избранных записей", если у пользователя нет избранных записей, и "Пользователь не авторизован", если пользователь не авторизован.
Надеюсь, это поможет тебе создать страницу, на которой будут отображаться только избранные записи. Если у тебя возникнут дополнительные вопросы, не стесняйся задавать их! Удачи!