Php 删除未在if条件内初始化的菜单页面()

Php 删除未在if条件内初始化的菜单页面(),php,wordpress,Php,Wordpress,我试图删除一些基于用户角色的菜单页面,但是当我在if条件中添加函数时,它什么也不做 function contributor_posts_action() { if ($role == 'contributor_posts') { // contributor_posts - custom role // echo 'here'; for testing purposes and WORKS, so it goes under the if condition add_ac

我试图删除一些基于用户角色的菜单页面,但是当我在
if条件中添加函数时,它什么也不做

function contributor_posts_action() {
  if ($role == 'contributor_posts') { // contributor_posts - custom role
    // echo  'here'; for testing purposes and WORKS, so it goes under the if condition
    add_action( 'admin_menu', 'remove_menus_contrib' );
    function remove_menus_contrib(){
        remove_menu_page( 'edit-comments.php' );    
        remove_menu_page( 'tools.php' );                   
        remove_menu_page( 'edit.php?post_type=directory' );          
        remove_menu_page( 'edit.php?post_type=city' );
    } // this function doesn't get hooked

    add_action( 'admin_bar_menu', 'remove_admin_bar_items', 999 );
    function remove_admin_bar_items( $wp_admin_bar ) {
        $wp_admin_bar->remove_node( 'new-directory' );
        $wp_admin_bar->remove_node( 'new-city' );
    }// this one works properly. It's for removing for admin bar.
  }
}
add_action( 'admin_init', 'contributor_posts_action' );

尝试将
remove\u menu\u contrib()
add\u操作('admin\u menu','remove\u menu\u contrib')
钩子函数从
contributor\u posts\u操作()中拉出


有些Wordpress钩子在其他(自定义)函数中不起作用。

您从未调用过这些函数,因此它们不会被执行@Rizier123使用add_操作调用它们,一个工作,另一个不工作。另外,如果我将函数remove-menumes\u contrib()与当前的add\u操作一起添加到
if条件
之外,它也会工作。这个
$role
来自哪里??将这些函数从
admin_init
回调中移除,只留下
add_action
s。仍然不工作,admin_bar_菜单也只用于admin barOK,你确定wordpress正在调用admin_菜单吗?我知道admin_菜单是一个钩子,所以应该像其他钩子一样调用。你能尝试删除
remove_menu页面()吗删除菜单中的code>功能函数并在其中放置一个
die('success')
?什么都没有发生,函数没有初始化。