Как я могу ограничить WordPress запрос, чтобы включить только 1 пост, который разделяет тег или изображение? - PullRequest
0 голосов
/ 16 марта 2020

Я написал небольшой скрипт для извлечения и отображения 4 случайных постов из той же категории, что и основной пост. Проблема в том, что 6 сообщений в этой категории (с метками вопросов и ответов) имеют одинаковое изображение Таким образом, если скрипт отображает два или три сообщения Q & A, он отображает одно и то же изображение 2-3 раза.

Можно ли ограничить запрос на получение 4 сообщений из категории, но включить только 1 из сообщений, которые имеют тег и изображение Q & A?

Это функция, которую я сейчас использую:

function wcr_related_posts($args) {
    global $post;
    $category = get_the_category(); 

    // default args
    $common_args = array(
        'numberposts'   => 4,
        'orderby'          => 'rand',
        'order'            => 'DESC',
        'meta_query' => array(
            'key' => '_thumbnail_id',
            'compare' => 'EXISTS'),
        'post_type'        => "post",
        'post_status'      => "publish",
        'post__not_in'     => array($post->ID)
    );

    $cat_search_args = array(
        'tax_query' => array(
            array(
                'taxonomy' => 'category',
                'field'    => 'name',
                'terms'    => $category[0]->name
            )
        ));
    $feature_posts_args = array(
        'post__in' => array( 705, 1883, 4897, 3967, 3766, 3585, 2698, 2412, 2203, 2575, 282, 4040)

                );

    if ( in_array($category[0]->name, array('Erotic Hypnosis', 'Dominance and Submission', 'Sexual Health'))&& is_page()!== true){
            $args = wp_parse_args($cat_search_args, $common_args);
        }else {
            $args = wp_parse_args($feature_posts_args, $common_args);
        }

    //  use for diagnostics only
    //  print_r($args); 

    // query
    $related_posts = get_posts($args);

    // get template
    include_once( __DIR__ . '/relatedposts-template.php');

    wp_reset_postdata();

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