按定义顺序的多个自定义域对帖子进行排序

时间:2014-08-08 作者:noelmcg

我目前正在按自定义字段“角色”和“姓氏”对一些帖子进行排序,使用以下内容:

function customorder($orderby) {
    return \'mt1.meta_value DESC, mt2.meta_value ASC\';
}

$args = array(
    \'post_type\'     => \'staff\', 
    \'meta_key\'      => \'role\',
    \'meta_query\'    => array(
        array(
        \'key\' => \'role\'
        ),
        array(
        \'key\' => \'surname\',
        ),
    )
);

add_filter(\'posts_orderby\',\'customorder\');
$query = new WP_Query( $args );
remove_filter(\'posts_orderby\',\'customorder\');
如何定义第一个meta\\u键的顺序,而不是按字母顺序desc或升序。例如,其中角色=\'班主任\'、\'代理\'、\'教师\'、\'支持\'、\'文书\'。。。因此,etc根据meta\\u键值对帖子进行分组。

提前感谢您的帮助

干杯

诺埃尔

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

您可以使用FIELD或FIND\\u IN\\u SET:

return "FIELD(mt1.meta_value, \'Head Teacher\', \'Deputy\', \'Teacher\', \'Support\', \'Clerical\') ASC, mt2.meta_value ASC";

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_field

结束

相关推荐

带MENU_ORDER和标题的Orderby

因为Wordpress的原生顺序系统有点愚蠢(即:1个香蕉,10个香蕉,2个香蕉,…)我需要添加一个插件,让我设置数字标题的顺序。问题是当我设置orderby= 具有menu_order title, 菜单的顺序就像我在后端设置的一样。但对于那些订单设置为0的。。。我想回到orderby=title.总之,我希望orderby=menu_order title 如果顺序设置为0,则返回标题。菜单顺序的插件链接:http://wordpress.org/plugins/term-menu-order/