WP查询多个值>首先显示特定值

时间:2019-06-09 作者:Gregory

我有一个查询,可以获取多个ID的关系字段。

我获取所选项目的ID,并将其与其他ID合并到一个数组中

例如:

我的页面关系ID=5我的其他页面ID在数组中=6,3,8所以我创建了一个数组=6,3,8,5

如何显示我的值,首先显示“5”的值,然后显示其他值?

我应该查询

5.

然后查询6,3,8?

或者有没有办法在5点之前订购,然后再由其他人订购?

我的查询:

        $args = array(
                \'post_type\' => \'maison-hotes\',
                \'post__not_in\' => $post_id,
                \'meta_query\' => array(
                    \'relation\' => \'OR\',
                    )
                );
        foreach($cities_id as $single_city_id) {
            $args[\'meta_query\'][] = array(
                \'key\' => \'contact_city\', 
                \'value\' => \'"\'.$single_city_id.\'"\', 
                \'compare\' => \'LIKE\'
            );
        }

        $query = new WP_Query($args);
        if ($query->have_posts() ) : 
            echo \'<h3 class="widget-title"><span><i class="fas fa-hotel"></i> D\\\'autres chambres d\\\'hôtes à \'. $city_name .\'</span></h3>\';
            while ( $query->have_posts() ) : $query->the_post();
                 my_stuf();
            endwhile;
        endif;
在SQL中,我知道我可以执行以下操作

ORDER BY CASE contact_city WHEN \'5\' THEN 1 ELSE 2
但我不知道如何复制到wordpress

2 个回复
最合适的回答,由SO网友:Gregory 整理而成

经过一个周末的搜索,我有了一个解决方案!

            function custom_posts_join($join){
                 global $wpdb;

                 $join .= " LEFT JOIN $wpdb->postmeta as pm ON $wpdb->posts.ID = pm.post_id ";

                 return $join;
            }
            add_filter( \'posts_join\' , \'custom_posts_join\');                
            add_filter( \'posts_orderby\', \'order_search_by_posttype\', 10, 2 );

            function order_search_by_posttype( $orderby, $wp_query ) {
                    global $city_id;
                    $orderby =
                        "
                        CASE WHEN pm.meta_key = \'contact_city\' AND pm.meta_value = \'$city_id\' THEN \'1\' 
                        ELSE pm.meta_key = \'contact_city\' END ASC";
                return $orderby;
            }
对于舒尔,使用后不要忘记移除滤波器

            remove_filter(\'post_join\' , \'custom_posts_join\');
            remove_filter(\'posts_orderby\', \'order_search_by_posttype\', 10, 2);

SO网友:Astrid

  \'orderby\' => \'post__in\',
  \'post__in\' => array(5,6,3,8),
您需要ACF按顺序传递ID,但这应该可以做到。

相关推荐

使用jQuery插入不适用于音频文件的帖子

我正在尝试将媒体库中的音频url插入到自定义元数据库中的字段中。我使用jQuery做了一个类似的操作,但取而代之的是抓取一个图像url,这非常有效。但由于某些原因,在尝试获取音频url时,它不起作用。以下是我的自定义元数据库中的字段,下面是我尝试使用的jQuery:Metabox Code <tr> <th>MP4 File Location:</th> <td><input type=\"text\"