我见过类似的问题和解决方案,但到目前为止,我无法将其应用到我的代码中。
以下代码(functions.php)工作得非常好:
if( isset($query->query_vars[\'post_type\']) && $query->query_vars[\'post_type\'] == \'turniere\' )
{
$query->set(\'orderby\', \'meta_value_num\');
$query->set(\'meta_key\', \'date_start\');
$query->set(\'order\', \'ASC\');
}
现在我想添加一种日期范围。这是迄今为止我得到的“最好的”:
if( isset($query->query_vars[\'post_type\']) && $query->query_vars[\'post_type\'] == \'turniere\' )
{
$query->set(\'orderby\', \'meta_value_num\');
$query->set(\'meta_key\', \'date_start\');
$query->set(\'order\', \'ASC\');
$query->set(\'meta_value\', \'20140520\');
$query->set(\'compare\', \'>=\');
$query->set(\'type\', \'NUMERIC\');
}
但它不起作用,页面上只说“没有可用的帖子”。
我尝试了每个参数的不同组合(meta\\u值有无)、不同的比较方法和每种可能的类型)。
“date\\u start”存储为yyyymmdd。我使用插件“高级自定义字段”来设置每篇文章的日期。
非常感谢您的帮助。:)
最合适的回答,由SO网友:Nicklas 整理而成
我想主要是因为type
参数您可能正在寻找meta_query
. 看看法典中的以下示例:
$args = array(
\'post_type\' => \'my_custom_post_type\',
\'meta_key\' => \'age\',
\'orderby\' => \'meta_value_num\',
\'order\' => \'ASC\',
\'meta_query\' => array(
array(
\'key\' => \'age\',
\'value\' => array(3, 4),
\'compare\' => \'IN\',
)
)
);
$query = new WP_Query($args);
我不能百分之百确定如何添加
meta_query
使用
$query->set
, 但您应该能够做到以下几点:
$meta_query = array(
array(
\'key\' => \'date_start\',
\'value\' => \'20140520\',
\'compare\' => \'>=\',
\'type\' => \'NUMERIC\'
)
);
$query->set(\'orderby\', \'meta_value_num\');
$query->set(\'meta_key\', \'date_start\');
$query->set(\'order\', \'ASC\');
$query->set(\'meta_query\', $meta_query);