使用/wp-admin/edit.php?post_type=列出管理视图中的所有发布类型

时间:2016-08-29 作者:HamJam

我已成功创建自定义帖子类型。我正在尝试构建一个URL,该URL指向admin视图中view all posts页面上所有帖子类型的组合列表。

我可以构建一个URL,指向特定帖子类型的帖子,例如http://<mysite>//wp-admin/edit.php?post_type=my_post_type. 但我找不到一种方法来列出所有帖子类型的帖子。

是否可以使用/wp-admin/edit.php?post_type= slug指向一个列出所有帖子类型的页面?或者,我怎样才能建立一个URL,它将?

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

唯一可行的方法是?post_type=any 基于WP_Query post_type 参数。

但背景是问题所在edit.php 页面需要特定的帖子类型,才能仅显示和编辑一个帖子类型$post_type_object 对于每个post\\u类型,它只返回一个单数标签、一个复数标签和其他许多单独属性。

这些不仅是技术上的障碍问题,而且是概念上的问题,使得这不可能实现。

就我个人而言,我会研究“如何构建自定义管理页面”,并使用如下查询post_type=any

SO网友:Howdy_McGee

你可以使用pre_get_posts 使用$_GET 参数和当前帖子类型的背驮-例如,假设我们正在管理面板中查看所有可编辑的帖子,我们可以添加一个参数showall=true 并显示所有帖子类型:

/**
 * Show all post editable post types
 *
 * @param WP_Query Object $query
 *
 * @return void
 */
function show_all_posttypes( $query ) {
    if( ! is_admin() ) {
        return;
    }

    if( isset( $_GET, $_GET[\'showall\'] ) && true == $_GET[\'showall\'] ) {
        $query->set( \'post_type\', \'any\' );
    }
}
add_filter( \'pre_get_posts\', \'show_all_posttypes\' );
如果您想以某种方式限制帖子类型,可以使用get_post_types() 函数并将返回的post类型传递到post_type 参数作为数组()。

我们甚至可以将其添加为子页面管理链接,以便于访问:

/**
 * Show All Post Types Link
 * - Subpage of "All Pages"
 *
 * @return void
 */
function show_all_posttypes_link() {
    add_submenu_page(\'edit.php?post_type=page\', \'\', \'All Post Types\', \'edit_posts\', \'/edit.php?post_type=page&showall=true\');
}
add_action( \'admin_menu\', \'show_all_posttypes_link\' );
您可以不断地扩展它来定制列输出等等,但这就是它的要点。

相关推荐

WP-ADMIN:“对不起,您不能访问此页面。”

两周后不使用我们的WP站点,登录/wp-admin/ 出现白屏错误:抱歉,不允许您访问此页面。我有:重命名plugins 到plugins.temp.通过phpMyAdmin创建了一个新的管理员用户。新用户已user_meta 的作用a:1:{s:13:"administrator";s:1:"1";}.</已重命名themes 到themes.temp.</删除核心WordPress文件,并替换为新上载的文件</已替换.htaccess 使用默认