it-swarm.com.ru

Пользовательский запрос для отображения сообщений с настраиваемым полем

У меня возникла проблема с пользовательским запросом для отображения моих сообщений, и мне не повезло ни на форуме Wordpress, ни на форуме плагинов, который я использовал для создания пользовательского типа сообщения.

Вот обзор ...

У меня есть пользовательский тип записи "Бизнес" Бизнес CPT имеет две пользовательских таксономии - "Тип бизнеса" и "Округ"

Я использовал плагин WP Types для создания настраиваемого типа публикации и создания настраиваемого поля с именем "Featured" с помощью флажка в области администратора.

Этот флажок, если установлен, помечает определенную запись как "ОСОБЕННОСТЬ"

Я использую плагин под названием Search & Filter, который позволяет пользователю выбрать "Тип бизнеса" в "Графстве" EG - АРЕНДА АВТОМОБИЛЕЙ в ЛОНДОНЕ

Затем он запускает мой шаблон search.php с запросом, который ДОЛЖЕН ...

  1. Отобразите любой "ОСОБЕННЫЙ" бизнес с прокатом автомобилей и лондонскими таксономиями как истинные.
  2. Затем отобразите список оставшихся компаний, для которых "Featured" не установлено значение true.

Так

ОСОБЕННЫЙ БИЗНЕС

Daves Car

Остальные предприятия

ABC Cars

123 машины

и т. д.

На данный момент Car Hire имеет 5 популярных предприятий. Мой запрос вытаскивает их всех, но не всех сверху. Это просто добавление их в алфавитный список с регулярными списками предприятий.

Это сводит меня с ума и, надеюсь, кто-то намного лучше меня в PHP, и Wordpress поможет мне разобраться с этим.

Вот запрос, который я сейчас использую

<?php   
    if (have_posts()): while (have_posts()) : the_post(); 
        $checked_meta = get_post_meta( $post->ID, 'wpcf-featured', true );

    if( $checked_meta ) { ?>   
    <article>
      <!--FEATURED BUSINESSES DISPLAY FIRST-->
    </article>
<?php } endwhile; ?>
<?php endif; ?>
<?php wp_reset_postdata();?>

<hr class="bottom-padding" />

<?php 
    $posts = query_posts($query_string . '&orderby=title&order=asc'); 
    if (have_posts()) : while (have_posts()) : the_post();?>

        <article class="row business-index" id="post-<?php the_ID(); ?>">
            <!--Normal Business Listings--> 
        </article>      
    <?php endwhile; ?>
    <?php endif; ?>

Все, что я хочу сделать, это отобразить все "ОСОБЕННЫЕ" предприятия для этого конкретного поиска в первую очередь, а затем отобразить оставшиеся списки.

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

Спасибо

Дэн

1
Daniel Winnard

Как подразумевается @ jdm2112, WP_Query для вашего второго отображения предпочтительнее, чем query_posts Попробуйте использовать WP Query для первого отображения.

Это будет выглядеть примерно так:

<?php  $args = array(
    'post_type'   => 'cars', // or whatevr the custom post type is 
    'post_status' => 'publish',

    'meta_query'     => array(
        array(
            'key' => 'wpcf-featured',
            'value' => true, // perhaps "true" instead?
            'compare' => '=' // or "LIKE"
        ),
);

$cars_query = new WP_Query( $args );

if ( $cars_query->have_posts() ) : while ( $cars_query->have_posts() ) : $cars_query->the_post(); ?>

<article></article>

<?php endwhile; ?>
<?php else: ?>
<?php endif; wp_reset_query(); ?>
1
Taruc