我找不到meta_key
要通过的参数GET
字符串。我测试的许多其他参数都通过了测试,虽然我没有进行详尽的测试,但meta_key
没有。
如果要验证,只需将以下内容添加到header.php
并检查查询。
echo \'<pre>\';
var_dump($wp_query); die;
echo \'</pre>\';
我以前从未尝试过传递该参数,但是
checking the Codex (谢谢@birgire),我明白了
meta_key
作为“私有”变量列出。您不能通过URL传递私有变量,即使直接传递给的参数有效
WP_Query
通过硬编码PHP。
你所尝试的,似乎是故意不允许的。您只能使用列为“Public”的参数通过URL修改查询。其他参数将被忽略,通过如上所述检查查询可以看到。
除此之外,当我看到像这样的“排序”问题时,我首先怀疑的是粘性帖子。如果您使用WP_Query
我建议您直接添加&ignore_sticky_posts=true
但我不能让它通过GET
任何一个
然而,如果您确实必须这样做,您应该能够通过打开过滤器来强制完成此操作pre_get_posts
.
function order_by_meta($qry) {
if (isset($_GET[\'meta_key\']) && $_GET[\'meta_key\'] == \'wpcf-evento-data-inicio1\') {
$qry->set(\'meta_key\',\'wpcf-evento-data-inicio1\');
}
}
add_action(\'pre_get_posts\',\'order_by_meta\');