对具有元日期的管理列的默认排序隐藏日期值为空的草稿帖子

时间:2013-11-17 作者:Aces

我有一个自定义的“gigs”帖子类型和一个metabox(使用meta-box 插件)并保存事件开始日期和时间,如:2013-11-29 20:30。

如果我保存的草稿没有设置时间/日期,那么它会按预期显示在“已发布”或“草稿帖子管理”列中。

然而,当我尝试在默认屏幕上命令未来的演出位于顶部时,没有日期的演出不会显示在列表中,尽管在顶部的状态行选择器中的“全部”和“草稿”计数中添加了一个。

我正在使用以下内容(基于https://wordpress.stackexchange.com/a/66478/7401 )

/* Sort posts in wp_list_table by column in ascending or descending order. */
function custom_post_order($query){
global $prefix;
    /* 
        Set post types.
        _builtin => true returns WordPress default post types. 
        _builtin => false returns custom registered post types. 
    */
    $post_types = get_post_types(array(\'_builtin\' => false), \'names\');
    /* The current post type. */
    $post_type = $query->get(\'post_type\');
    /* Check post types. */
    if(in_array($post_type, $post_types) && $post_type == \'gigs\'){
        /* Post Column: e.g. title */
        if($query->get(\'orderby\') == \'\'){
            $query->set(\'orderby\', \'meta_value\');
        }
        if($query->get(\'meta_key\') == \'\'){
            $query->set(\'meta_key\',  $prefix . \'startdatetime\');
        }
    }
}
if(is_admin()){
    add_action(\'pre_get_posts\', \'custom_post_order\');
}
有没有办法在默认的管理员列表中不包含日期/时间,最好是在顶部?

2 个回复
SO网友:hexagonsarah

我也在努力解决这个问题(只是我在按基于文本的元值排序)。以下是解决问题的方法:

$meta_query = array( 
    \'relation\' => \'OR\',
    array(
      \'key\' => \'property_reference\',
      \'value\' => false,
      \'type\' => \'BOOLEAN\',
    ),
    array( 
      \'key\' => \'property_reference\',
      \'compare\' => \'NOT EXISTS\',
      \'value\' => \'\', //have to set value due to bug: core.trac.wordpress.org/ticket/23268
    ),
    array(
      \'key\' => \'property_reference\',
    )

  );

  $query->set( \'meta_query\', $meta_query );  
  $query->set( \'meta_key\', \'property_reference\' );      
  $query->set( \'orderby\', \'meta_value\' );
。。。哪里property_reference 是我的自定义字段。

SO网友:Mark Kaplun

很可能没有为没有设置时间/日期的帖子设置元键。您尝试执行的meta\\u key“startdatetime”查询仅检索设置了该meta key的帖子,这就是您在结果中无法获取这些帖子的原因。

我不知道有哪种简单的sql查询可以满足您的需要。为此,您可能需要咨询具有更多sql专业知识的人员。然后可以更改正在执行的实际sql查询。

结束

相关推荐

如果META_KEY的值=6|将wp_posts.post_date更改为当前日期

我有三个部分:1-新岗位2趋势岗位3热点岗位我使用的是投票插件,我对每个部分都进行了如下排序:新职位:$args = array( \'meta_query\'=> array( array( \'key\' => \'_wti_like_count\', \'compare\' => \'<=\', \'value\' => 5, \'type\' => \'n