@Evdokim001
PHP & WordPress developer

Как сделать динамический запрос в WP_Query?

Добрый вечер. Никак не получается создать динамический запрос через параметры $args. Обычный SQL не подходит потому что данные в таблице сериализованные.
Пробывал и через foreach добавлять параметры к tax_query, но все тщетно. WP_QUERY ничего не возвращает.
Суть задачи такова, что атрибуты или таксономии будут меняться или их количество будет изменяться и для этого нужно сгенерировать определенный $args.
Целый день с этой задачей работаю, ничего сделать толкового не получилось, а в интернете на тему динамических запросов очень мало информации. Кто понимает, напишите как поступить?
  • Вопрос задан
  • 94 просмотра
Пригласить эксперта
Ответы на вопрос 1
Ну по сути - здесь можно сделать шорткод

И расточить шорткод для ваших целей - где вы будете задавать тип записи, кол-во постов, таксономию и т.д - можно вообще все

// Shortcode for projects [projects-list posts="3"]
function projects_listing_parameters_shortcode( $atts ) {
    ob_start();

    $args = shortcode_atts( array (
        'type' => 'projects',
        'posts' => 6,
        'cat' => ''
    ), $atts );

    $options = array(
        'post_type' => $args['type'],
        'posts_per_page' => $args['posts'],
        'tax_query' => array(
            array (
                'taxonomy' => 'project',
                'field' => 'slug',
                'terms' => $args['cat'],
            )
        ),
    );

    $query = new WP_Query( $options );

    if ( $query->have_posts() ) $item = 0; {
        while ( $query->have_posts() ) : $query->the_post(); $item++;
            echo '<div class="item item-' . $item . '">';
                get_template_part( 'template-parts/project-cards', get_post_format() );
            echo '</div>';
        endwhile;
        wp_reset_postdata();
        $myvariable = ob_get_clean();
        return $myvariable;
    }
}
add_shortcode( 'projects-list', 'projects_listing_parameters_shortcode' );
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы