按帖子ID列出的管理员帖子列表(edit.php)

时间:2013-04-19 作者:P_Enrique

我正在编写一个插件,可以批量创建帖子。我为用户提供了一种预先设置所创建帖子的某些参数的方法。但是使用WordPress默认的“所有帖子”会很有用(edit.php) 界面,以在创建帖子后微调详细信息。我看了一下class-wp-list-table.php 复制它的功能将是一项艰巨的工作。

最好的解决方案是只发送用户进行编辑。php-仅限于我的插件创建的帖子。我有帖子的ID,所以我正在寻找一个解决方案,如edit.php?id=1&id=2, 显示一个很好的列表表,其中只包含具有这些ID的帖子。

1 个回复
最合适的回答,由SO网友:brasofilo 整理而成

可以使用pre_get_posts.

在所有变量名前加前缀很重要,id 似乎不在reserved terms list, 但无论如何,这种做法避免了任何不可预见的错误。

/**
 * Usage:
 * http://example.com/wp-admin/edit.php?my_pids=4088,4090,4092,4094
 */
add_filter( \'pre_get_posts\', \'limit_post_list_wpse_96418\' );

function limit_post_list_wpse_96418( $query ) 
{
    // Don\'t run on frontend
    if( !is_admin() )
        return $query;

    global $pagenow;

    // Restrict to Edit page
    if( \'edit.php\' !== $pagenow )
        return $query;

    // Check for our filter
    if( !isset( $_GET[\'my_pids\'] ) )
        return $query;

    // Finally, filter
    $limit_posts = explode( \',\', $_GET[\'my_pids\'] ); // Convert comma delimited to array    
    $query->set( \'post__in\', $limit_posts );      

    return $query;
}

结束

相关推荐

这个wp_Query有什么问题?

我需要通过两个元字段查询帖子,而我使用的wo\\U查询没有返回任何内容。显然,它坏了。有人能告诉我我做错了什么吗?$args = array( \'post_type\' => \'espresso_event\', \'post_status\' => \'publish\', \'posts_per_page\' => 8,