我有同样的要求。我相信这是一只虫子。我今天提出了一个WordPress跟踪报告,报告了我的发现。
https://core.trac.wordpress.org/ticket/29714
看看你是否有同样的问题。
Workaround
我还开发了一种变通方法,可以让您同时取得进步。
为“user\\u has\\u cap”创建筛选函数。在该筛选函数中,当检查的功能是您定义的功能时(例如“编辑您的CPT”),添加以下逻辑。
global $pagenow;
if ( $pagenow == "edit.php" && isset( $_REQUEST[\'post_type\'] ) ) {
$pagenow .= \'?post_type=\' . $_REQUEST[\'post_type\' ];
}
这将允许失败的函数(user\\u can\\u access\\u admin\\u page())返回true。
10月11日更新。解决方案的第一部分有一些不必要的副作用。为了克服这些问题,你需要更多的代码。
add_filter( "add_menu_classes", "oik_sites_add_menu_classes" );
/**
* Implement "add_menu_classes" filter for oik-sites
*
* Part 2 of the Workaround for TRAC #29714
*/
function oik_sites_add_menu_classes( $menu ) {
global $pagenow;
if ( false !== strpos( $pagenow, "edit.php" ) ) {
$pagenow = "edit.php";
}
return( $menu );
}