为什么这不适合我的创世纪!!带有条件标签的remove_action

时间:2018-04-20 15:24:45

标签: php wordpress genesis

您好我构建了一个工作且看起来很棒的导航小部件,显示来自Buddypress的登录人员,但显然我希望它隐藏在主导航,登录页面等上。

我把头发拉到这里是因为从各方面来说,我做的是对的? - 但它根本不起作用,真的很感激这里的一些帮助!感谢

/** Register Utility Bar Widget Areas. */
genesis_register_sidebar( array(
 'id' => 'utility-bar-left',
 'name' => __( 'TRN Member Utility Bar left', 'theme-prefix' ),
 'description' => __( 'This is the left utility bar above the header.', 'theme-prefix' ),
) );
genesis_register_sidebar( array(
 'id' => 'utility-bar-right',
 'name' => __( 'TRN Member Utility Bar Right', 'theme-prefix' ),
 'description' => __( 'This is the right utility bar above the header.', 'theme-prefix' ),
) );


add_action( 'genesis_before_header', 'utility_bar' );

function utility_bar() {

 echo '<div class="utility-bar">';

 genesis_widget_area( 'utility-bar-left', array(
 'before' => '<div class="utility-bar-left">',
 'after' => '</div>',
 ) );

 genesis_widget_area( 'utility-bar-right', array(
 'before' => '<div class="utility-bar-right">',
 'after' => '</div>',
 ) );

 echo '</div></div>';
}

add_action('genesis_before_header','remove_bar');

function remove_bar() {
if (is_home() || is_page(www.trnworld.com) || is_page(trn-login) || is_front_page() ) { //Replace post_type with your post type slug
remove_action( 'genesis_before_header', 'utility_bar', 5 );
remove_action( 'genesis_before_header', 'genesis_register_sidebar' );
}
}

1 个答案:

答案 0 :(得分:0)

来自Wordpress文档:

  

重要说明:要删除挂钩,$ function_to_remove和$ priority参数必须在添加挂钩时匹配。这适用于过滤器和操作。删除失败不会发出警告。

add_action( 'genesis_before_header', 'utility_bar' );

不符合

remove_action( 'genesis_before_header', 'utility_bar', 5 );

此外,您已添加了用于显示窗口小部件的操作以及用于将显示窗口小部件的操作移除到同一个挂钩的操作。

来自add_action

上的Wordpress文档
  

$优先   (int)(可选)用于指定与特定操作关联的函数的执行顺序。较低的数字与先前的执行相对应,具有相同优先级的函数按照它们添加到操作的顺序执行。

     

默认值:10

您已添加两个具有相同默认优先级10的操作,并且在add_action( 'genesis_before_header', 'utility_bar' );之前添加add_action('genesis_before_header','remove_bar');,因为在genesis_before_header上打印小部件时调用do_action函数,它首先运行;之后,第二个函数对已经执行的操作执行remove_action。

看看如果你改变

会发生什么

add_action('genesis_before_header','remove_bar');add_action( 'genesis_before_header','remove_bar', 9 );

remove_action( 'genesis_before_header', 'utility_bar', 5 );remove_action( 'genesis_before_header', 'utility_bar' );

你的函数utility_bar()中的无关注释我看到2个结束div但只有一个开口。我猜这会导致布局问题处于显示状态之一。