按日期(自定义域)范围查询自定义过帐类型

时间:2014-05-31 作者:Daniel

我见过类似的问题和解决方案,但到目前为止,我无法将其应用到我的代码中。

以下代码(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。我使用插件“高级自定义字段”来设置每篇文章的日期。

非常感谢您的帮助。:)

1 个回复
最合适的回答,由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);

结束

相关推荐

按日期(自定义域)范围查询自定义过帐类型 - 小码农CODE - 行之有效找到问题解决它

按日期(自定义域)范围查询自定义过帐类型

时间:2014-05-31 作者:Daniel

我见过类似的问题和解决方案,但到目前为止,我无法将其应用到我的代码中。

以下代码(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。我使用插件“高级自定义字段”来设置每篇文章的日期。

非常感谢您的帮助。:)

1 个回复
最合适的回答,由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);

相关推荐

如何让`wp-list-table`显示我在Custom-Post中的`Custom-Fields`

一切都好吗<我需要wp-list-table 也要显示custom-fields 在每个custom-post 我有,但我不知道如何做到这一点,在这幅图中,它显示了带有字段的表格:Title, Author and Publication Date: 我想要的是能够选择custom-fields 将出现,例如以下示例Title, Carta, Naipe, Author, and Date of Publication: