Динамический мета_запрос в зависимости от параметров переменной запроса в пользовательском типе записи url WordPress

#wordpress #query-variables

#wordpress #запрос-переменные

Вопрос:

В моем пользовательском типе сообщения я хочу фильтровать в зависимости от параметров в URL. Например ?car=yellowamp;foo=1 , обратитесь к ключу и значению мета-запроса. Ключ и значение являются дополнительными полями. Что делает его еще более сложным, так это то, что

Вот как сейчас выглядит мой цикл:

 $args = array(
    'post_type'=>'glas', // Your post type name
    'posts_per_page' => 9,
    'paged' => $paged,
);

$loop = new WP_Query( $args ); ?>
<?php if($loop->have_posts()): ?>
    <?php while ( $loop->have_posts() ) : $loop->the_post(); ?>

        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <?php echo get_field('type_glas'); ?> <?php echo get_field('uitvoering_glas'); ?><br>


    <?php endwhile; ?>
    <?php $total_pages = $loop->max_num_pages; ?>
    <?php if ($total_pages > 1) : ?>
        <?php
        $current_page = max(1, get_query_var('paged'));

        echo paginate_links(array(
            'base' => get_pagenum_link(1) . '%_%',
            'format' => '/page/%#%',
            'current' => $current_page,
            'total' => $total_pages,
            'prev_text'    => __('« prev'),
            'next_text'    => __('next »'),
        ));
        ?>
    <?php endif; ?>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
  

Комментарии:

1. У меня нет времени на написание полного примера, но в основном вам нужно зарегистрировать переменные вашего запроса (car, foo), а затем добавить дополнительные аргументы в ваш массив $args с помощью meta_query. Например, if(isset(get_query_var(‘car’)) … по сути, это предложение начать поиск в Google. то, что вы ищете, не сложно сказать.

2. Нетрудно добавить « ‘meta_query’ => array( ‘relation’ => ‘AND’, array( ‘key’ => ‘foo’, ‘value’ => ‘bar’, ‘compare’ => ‘=’ ), array( ‘key’ => ‘foo’, ‘value’ => ‘bar’, ‘compare’ => ‘=’), array( ‘key’ => ‘x’, ‘value’ => ‘y’, ‘сравнить’ => ‘=’ ), ) « К WP_Query, чтобы получить результат. Но я хочу сделать это в зависимости от запроса в URL. При необходимости я также хочу добавить другое сравнение ключей и значений

3. Поискал в Google регистр переменных запросов. Я думаю, что это поможет мне в пути

4. Да, поэтому вы вводите условное значение — if isset query var, $args[‘meta_query’] = array() … вы вводите его после объявления аргументов точно так, как они у вас есть сейчас. Вы всегда можете добавить отдельные элементы в массив аргументов на основе условий. Просто введите их перед запуском wp_query, и это должно сработать

5. Я нашел ответ здесь , спасибо @kai