Назначьте 3 случайных поста в категорию каждый день - PullRequest
1 голос
/ 10 марта 2019

Я хочу создать функциональность "Рецепты дня".

Поэтому я хотел бы добавить 3 сообщения WordPress с пользовательским типом записи "Рецепт" в категорию "Рецепт дня".

Также я хотел бы убрать рецепты дня из предыдущего дня.

У меня уже есть несколько строк кода для этого, но я не знаю, как назначить и отменить назначение категории.

TLDR: Моя проблема: Я не знаю, как назначить и отменить назначение категории в моем цикле.

add_action( 'wp', function () {
    if (! wp_next_scheduled ( 'mark_posts_as_featured_event' )) {
        wp_schedule_event(time(), 'daily', 'mark_posts_as_featured_event');
    }
} );

function mark_posts_as_featured_event_callback() {
    // if there are sticky posts in our CPT, unstick them
    $sticked_post_ids = get_option( 'sticky_posts' );
    if ( ! empty ) { 
        $old_featured_posts = get_posts( array(
            'post_type' => '<MY_POST_TYPE>',
            'fields' => 'ids',
            'post__in' => $sticked_post_ids,
        ) );

        foreach ( $old_featured_post_ids as $post_id ) {
            // unassign category
        }
    }

    // stick new posts
    // get_random_posts
    $new_featured_post_ids = get_posts( array(
        'post_type' => '<MY_POST_TYPE>',
        'posts_per_page' => 3,
        'orderby' => 'rand',
        'fields' => 'ids',
    ) );

    foreach ( $new_featured_post_ids as $post_id ) {
        // assign category
    } 
}
add_action( 'mark_posts_as_featured_event', 'mark_posts_as_featured_event_callback' );

1 Ответ

0 голосов
/ 11 марта 2019

Я думаю, что вы ищете

    wp_set_post_categories() 

Функция.

https://developer.wordpress.org/reference/functions/wp_set_post_categories/

Вы можете добавить категорию «ежедневные получатели» для дня. На следующий день запустите функцию, используя тот же метод, что и выше, установите для bool значение true и просто добавьте категорию получателей.

Это затем удалит все категории сообщений и назначит только те, которые вы им дали, т.е. получатели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...