你可以使用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\' );
您可以不断地扩展它来定制列输出等等,但这就是它的要点。