我正在对WP Super Cache进行修改,添加了两个新功能,可以更好地控制某些功能的限制。我的目标是a)允许编辑器看到管理栏上的删除缓存按钮,b)使用它删除他们正在编辑的页面的缓存。我得到了“a”,但当编辑器单击“删除缓存”时,他们会得到“您没有足够的权限访问此页面”
我找不到插件的哪一部分强制进行此权限检查,但我想知道这是否与菜单项指向的URL有关。
以下是添加菜单项的函数和挂钩:
function supercache_admin_bar_render() {
global $wp_admin_bar, $wp_cache_not_logged_in;
if ( !is_user_logged_in() && !$wp_cache_not_logged_in )
return false;
// ORIGINALLY if ( wp_supercache_admin() )
if ( !current_user_can(\'wp_supercache_delete_page_cache\') && !current_user_can(\'wp_supercache_manage_options\') )
return false;
$wp_admin_bar->add_menu( array(
\'parent\' => \'\',
\'id\' => \'delete-cache\',
\'title\' => __( \'Delete Cache\', \'wp-super-cache\' ),
\'href\' => wp_nonce_url( admin_url( \'admin.php?page=wpsupercache&action=wpsupercachedelete&path=\' . urlencode( $_SERVER[ \'REQUEST_URI\' ] ) ), \'delete-cache\' ) // ORIGINALLY pointed to options.general.php?page=wpsupercache&action=delete...
) );
}
add_action( \'wp_before_admin_bar_render\', \'supercache_admin_bar_render\');
我认为这一部分也与解决这个问题有关。。。这在插件文件的其他地方,而不是在任何函数中(我需要提高优先级吗?)if ( isset( $_GET[ \'page\' ] ) && $_GET[ \'page\' ] == \'wpsupercache\' )
add_action( \'admin_init\', \'wp_cache_manager_updates\' );
我已经对wp_cache_manager_updates
因此,它说明了上述功能。事实上,此函数从未运行过。我放了一个die(\'got to wp_cache_manager_updates\');
看看有没有碰过它。事实并非如此。有东西截获并将我发送到权限不足的ville。