QUERY_POST在多个方向排序

时间:2012-01-25 作者:MechEngineer

我试图通过使用多个标准来改进我的帖子排序,但我希望为不同的值指定特定的顺序。例如,我有一个名为“featured”的meta\\u键,我想将任何帖子移至顶部。要匹配“特色”,应按标题排序。

问题是,我只能在query\\u posts函数中定义一个“order”键。

$args=array(
                                        \'post_type\'         => \'portfolio-item\',
                                        \'post_status\'       => \'publish\',
                                        \'caller_get_posts\'  => 1,
                                        \'paged\'             => $paged,
                                        \'meta_key\'          => \'featured\',
                                        \'orderby\'           => \'meta_value title\',
                                        \'order\'             => \'desc asc\',
                                    );
这是我想使用的参数数组(注意多个顺序值。不幸的是,这似乎不是正确的形式。有什么建议吗?

1 个回复
SO网友:kaiser

OrderBy查询函数,如get_posts(), query_posts() 呼叫anew WP_Query 里面——它们只是包装纸。

更重要的是class WP_Query. 特别是内部WP_Query -> get_posts(). 当您添加orderby 参数,则发生以下情况:

WP检查是否已设置。如果不是,则使用$wpdb->posts.post_date 并将`顺序值附加到它\'none\', 然后没有应用顺序But... 有“允许的orderby”值:

$allowed_keys = array(\'name\', \'author\', \'date\', \'title\', \'modified\', \'menu_order\', \'parent\', \'ID\', \'rand\', \'comment_count\');
对于元键/值对,有一种特殊情况:如果元键不为空,则meta_key 值添加到允许的键,以及meta_valuemeta_value_num.

函数,然后分解orderby 字符串到数组并循环。匹配的所有内容都将添加到一个新数组中,该数组在循环后内爆(用逗号分隔),并添加到SQL查询字符串中。如果生成的数组为空,则"$wpdb->posts.post_date" 然后是order 将采取行动。如果它也是空的,那么您将看到与none.

因此,如果要添加元键和元值之类的内容,则应将以下内容添加到查询中:

"$wpdb->postmeta.meta_value,$wpdb->postmeta.meta_value,$wpdb->posts.post_title"
将您的帖子类型参数添加到WHERE 条款如下:

 AND $wpdb->posts.post_type = \'portfolio-item\'
我认为这里有什么不对的地方:

你不能添加asc descorder 陈述订单must be 任何一个ASC or DESC (大写/小写无关紧要)。这行不通,可能会破裂\'portfolio-item\' 不是实际的帖子类型名称。我想只是portfolio. 确保调用内部命名的任何post类型

var_dump( array_keys( (array) $GLOBALS[\'wp_post_types\'] ) );
  • caller_get_posts 是3.1之前的参数。您应该已经在代码的顶部/开头有一个注释,如下所示_deprecated_argument() 在生成任何查询字符串之前调用:

    "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead.
    
  • 结束

    相关推荐

    Sort admin menu items

    关于“的相关注释”Changing the Order of Admin Menu Sections?“,我正在寻找一种按字母顺序对WordPress管理区域的每个子部分中的条目进行排序的方法。目前,每当添加新插件时,其条目都会出现在“设置/工具/插件”下看似随机的位置,通常很难找到新的菜单项。(我已经有很多插件了,所以我的菜单很满。)由于我相当经常地添加和删除插件,所以我宁愿不需要不断进入设置页面来获取菜单排序插件并调整顺序。抱歉问了这么长的问题;我只是想弄清楚我在找什么。示例代替: S