按帖子元(日期)自定义帖子管理员筛选

时间:2011-02-23 作者:Richard Sweeney

我已经为事件创建了一个自定义帖子类型,它使用自定义字段来检索事件的日期。它工作正常,我可以使用meta_compare 将日期值与当前日期进行比较。

到目前为止还不错。我还可以通过删除meta compare) 通过apre get posts 滤器

我想做的是创建一个显示过去事件的管理页面。我使用以下代码创建了页面(和菜单项):

add_action(\'admin_menu\', \'add_concerts_page\');
function add_concerts_page() {
    add_submenu_page(\'edit.php?post_type=concerts\', \'Concerts Archive\', \'Concerts Archive\', \'manage_options\', \'concerts-archive\', \'my_archive_function\' );
}

function my_archive_function() {}
但我不知道如何编写函数!!我可以编写一个常规循环并过滤结果,就像我在前端所做的那样,但我所需要做的就是显示与普通管理页面相同的信息,但显示自那以后发生的事件。

这就是我如何过滤自定义帖子编辑屏幕以仅显示未来事件的方式:

function concerts_pre_get_posts($query) {
  if (is_admin()) {
    if (isset($query->query_vars[\'post_type\'])) {
      if ($query->query_vars[\'post_type\'] == \'concerts\') {
          $query->set(\'meta_key\', \'date_value\');
          $query->set(\'orderby\', \'meta_value\');
          $query->set(\'order\', \'ASC\');
    $query->set(\'meta_compare\', \'>=\');
          $query->set(\'meta_value\', time());

      }
    }
  }
}
add_filter(\'pre_get_posts\' , \'concerts_pre_get_posts\');
我真的不需要为过去的事件创建一个单独的归档页面,只需要在这个页面上创建一个链接来将查询从过去切换到未来的事件就可以了,但我不知道该怎么做!

非常感谢所有帮助!

1 个回复
SO网友:dwenaus

您需要以某种可排序的格式(如YYYY-MM-DD)或unix时间戳存储日期,否则您不能仅通过查询来实现这一点。一旦格式为YYYY-MM-DD,就应该可以使用。尝试以下操作:

function concerts_pre_get_posts( $query ) {
    if ( !is_admin() )
        return;

    if ( isset( $query->query_vars[ \'post_type\' ] ) && $query->query_vars[ \'post_type\' ] == \'concerts\' ) {
        $query->set( \'orderby\', \'meta_value\' );
        $query->set( \'order\', \'ASC\' );
        $query->set( \'meta_query\', array(
            array(
                \'key\' => \'date_value\',
                \'value\' => date( "Y-m-d" ),
                \'compare\' => \'<=\',
                \'type\' => \'DATE\'
            )
        ) );
    }
}
add_filter( \'pre_get_posts\', \'concerts_pre_get_posts\' );

结束

相关推荐

Wp-admin页面中的MySQL复制延迟问题

我有一个运行WP 3.0.1的环境,其中有一个主数据库和两个从数据库。我正在使用HyperDB强制所有写入都转到主服务器,所有读取都从两个从服务器读取。我在wp admin页面中遇到了各种问题,其中数据正在写入主机,WordPress试图从从机读取,而数据尚未到达从机。这方面的一个例子是当我钩住\'dbx_post_advanced\' 在新帖子上预设一些类别和自定义分类术语。我已经验证,当我将HyperDB配置为仅从主机读写时,\'dbx_post_advanced\' 挂钩工作正常。我目前正在研究以下