我正在尝试修改分类页面上的主要WordPress循环,如下所示:
add_filter(\'parse_query\', \'my_modified_query\');
function my_modified_query( $q ) {
if (!is_admin() && is_category()) {
$q->set( \'orderby\', \'meta_value\' );
$q->set( \'meta_key\', \'my_key\' );
}
return $q;
}
但它似乎不起作用。
但是,修改其他内容,如:
$q->set( \'order\',\'title\' );
$q->set( \'orderby\', \'DESC\');
工作正常。只是没有
$q->set( \'orderby\', \'meta_value\' );
$q->set( \'meta_key\', \'my_key\' );
知道为什么吗?
SO网友:t31os
最终,所有的元查询都可以运行_get_meta_sql
.
以下密码语句用于任何元查询。
if ( empty( $meta_key ) && empty( $meta_value ) )
continue;
这里有一张罚单,上面列出了我们应该做什么
http://core.trac.wordpress.org/ticket/16735然而,您可以做的是有目的地将查询传递给meta_value
您的帖子可能永远不会使用!=
(不等于)比较,从技术上讲,这会让你得到正确的职位,例如。。
$q->set( \'meta_key\', \'my_key\' );
$q->set( \'meta_value\', \'WPSE_RULES!\' );
$q->set( \'meta_compare\', \'!=\' );
$q->set( \'orderby\', \'meta_value\' );
不过还有一件事,你以前把这些都搞错了。。
$q->set( \'order\',\'title\' );
$q->set( \'orderby\', \'DESC\');