YKornilov1981 19.03.2023 03:33

Как создать пользовательскую страницу с отображением записей, добавленных в избранное на 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();

Буду очень благодарен за помощь в решении этой задачи! Спасибо заранее!

Ответы:

strelka79 19.03.2023 03:54

Для того, чтобы отображать только записи, у которых поле "Избранное" отмечено, тебе нужно использовать параметры '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, чтобы получить только эти записи.

Также, я добавил сообщение "Нет избранных записей", если у пользователя нет избранных записей, и "Пользователь не авторизован", если пользователь не авторизован.

Надеюсь, это поможет тебе создать страницу, на которой будут отображаться только избранные записи. Если у тебя возникнут дополнительные вопросы, не стесняйся задавать их! Удачи!


Добавить ответ