WP查询中基于自定义字段值的排序

时间:2018-02-20 作者:terminator

我正在尝试获取基于两个自定义字段的自定义帖子类型“job\\u listing”,即1)\\u job\\u location2)\\u company\\u name

这很好用

但我也希望首先显示来自给定公司的帖子,即如果帖子属于XYZ公司,则应首先显示它们,然后显示来自给定位置的其余帖子

$related_args = array(
    \'post_type\' => \'job_listing\',
    \'orderby\'   =>  $company_name,
    \'meta_key\'  => \'_company_name\',
    \'posts_per_page\' => 6,
    \'post_status\' => \'publish\',
    \'post__not_in\' => array( $post->ID ),
    \'meta_query\' => array(    

                        \'relation\' => \'OR\',
                        array(
                              \'key\'   => \'_job_location\', 
                              \'value\' => $job_location,
                              ),
                        array(
                              \'key\'   => \'_company_name\', 
                              \'value\' => $company_name,
                              ),      

                    ),

    );
我的排序逻辑错误,我似乎能找到解决方案。。所以请帮帮我

1 个回复
SO网友:Thomas Fellinger

“”\'orderby\' => $company_name,“应该是”\'orderby\' => \'meta_value\',“”

如果_company_name 是数字-应该是meta_value_num.

请注意,“orderby”只能具有预定义的值,并且按字母顺序排序

请参阅WP\\u Query orderby参数中的可能值:https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters

排序参数表示:按meta_key - _company_name 在你的情况下。你的问题不是这样说的。

如果你首先只想从一家特定的公司发帖,你必须做2个循环。

一个有$company_name 就像你做的那样,还有一个$company_name

第一个循环参数:

$related_args_company = array(
    \'post_type\' => \'job_listing\',
    \'posts_per_page\' => 6,
    \'post_status\' => \'publish\',
    \'post__not_in\' => array( $post->ID ),
    \'meta_query\' => array(    
                        \'relation\' => \'AND\',
                        array(
                              \'key\'   => \'_job_location\', 
                              \'value\' => $job_location,
                              ),
                        array(
                              \'key\'   => \'_company_name\', 
                              \'value\' => $company_name,
                              ),      

                    ),

    );
第二个循环参数:

$related_args = array(
    \'post_type\' => \'job_listing\',
    \'posts_per_page\' => 6,
    \'post_status\' => \'publish\',
    \'post__not_in\' => array( $post->ID ),
    \'meta_query\' => array(    
                        \'relation\' => \'AND\',
                        array(
                              \'key\'   => \'_job_location\', 
                              \'value\' => $job_location,
                              ),
                        array(
                              \'key\' => \'_company_name\',
                              \'value\' => $company_name,
                              \'compare\' => \'NOT LIKE\'
                        ),

                    ),

    );
你好,汤姆

结束