您可以使用过滤器wpseo_submenu_pages
为此。该插件提供了array
,并列出访问特定页面所需的功能。
Submenupageitemwpseo_bulk-title-editor
具有以下值(例如):
[7] => Array
(
[0] => wpseo_dashboard //parentmenupage
[1] => Yoast WordPress SEO: Bulk Title Editor // Page Title
[2] => Bulk Title Editor // Menu Title
[3] => wpseo_bulk_edit // Capability needed
[4] => wpseo_bulk-title-editor // Page to load
[5] => Array // some other stuff, did not check by now.
(
[0] => WPSEO_Admin Object
(
)
[1] => load_page
)
[6] => Array
(
[0] => Array
(
[0] => WPSEO_Admin Object
(
)
[1] => bulk_edit_options
)
)
)
从中,您可以看到两种不同的可能性:
用户管理
removing the capability wpseo_bulk_edit
from non-admins
具有此功能的标准角色包括:
$roles = array(
\'administrator\',
\'editor\',
\'author\',
\'contributor\',
);
您可以将函数筛选为
wpseo_submenu_pages
:
function f711_add_WPSEO_bulk_capabilities( $roles ) {
return array( \'administrator\' ); // skip all other roles
}
add_filter( \'wpseo_bulk_edit_roles\', \'f711_add_WPSEO_bulk_capabilities\', 999999, 1 );
遗憾的是,此筛选器仅用于
activate
和
deactivate
插件,所以您必须这样做
仅在激活插件时挂接该功能-否则您将从筛选的角色中删除该功能之后,过滤器必须保持活动状态,因为每次激活插件时都需要过滤角色。
更改批量编辑所需的功能这是另一个解决方案,尽管第一个更好,IMO。
您可以循环浏览菜单页,并设置wpseo_bulk-title-editor
到manage_options
.
function f711_remove_WPSEO_admin_pages( $adminpages ) {
foreach( $adminpages as &$thispage ) {
if ( $thispage[4] == \'wpseo_bulk-description-editor\' || $thispage[4] == \'wpseo_bulk-title-editor\' ) { // check the page
$thispage[3] = \'manage_options\'; // set the needed capability
}
}
return $adminpages;
}
add_filter( \'wpseo_submenu_pages\', \'f711_remove_WPSEO_admin_pages\', 999999, 1 );
两者都很好——第二个解决方案的好处是它是能力驱动的,而第一个解决方案取决于角色。第一种解决方案的好处是,您只需运行一次函数,而不是每次调用admin,因此在考虑性能时会更好。
EDIT
当然,正如@engelen所提到的,您也可以删除该功能,但每次手动激活插件时,它都会再次添加。