灰色导航按钮,除非IS_USER_LOGED_IN()

时间:2013-03-11 作者:Ben Racicot

如果我的用户在一个特殊的导航栏注册,我想向他们展示我提供的一些功能。我已经为登录版本和注销版本创建了以下内容:

if ( is_user_logged_in() ) {
    $menu = wp_nav_menu( array(
        \'theme_location\' => \'logged-in-menu\',
        \'container\'      => \'0\',
        \'fallback_cb\'    => \'wp_page_menu\',
        \'echo\'           => \'0\',
    ) );
    echo $menu;
} else {
    $menu = wp_nav_menu( array(
        \'theme_location\' => \'main-menu\',
        \'container\'      => \'0\',
        \'fallback_cb\'    => \'wp_page_menu\',
        \'echo\'           => \'0\',
    ) );
    ?>
    <style>#menu-item-1046{opacity : 0.4; filter: alpha(opacity=40);}</style>
    <?php
    echo $menu;
}
我正在尝试按ID灰显(禁用但保持可见)导航按钮。显然,我的CSS在那里工作,但不禁用按钮。。。

我试过了<script>$(\'#menu-item-1046\').button(\'disable\');</script> 但到目前为止,我几乎没有涉足jQuery。

2 个回复
SO网友:kaiser

当你看的时候at the possible arguments, 然后您会看到,还有一个选项可以添加自定义导航菜单walker

$defaults = array(
    \'theme_location\'  => \'\',
    \'menu\'            => \'\',
    \'container\'       => \'div\',
    \'container_class\' => \'\',
    \'container_id\'    => \'\',
    \'menu_class\'      => \'menu\',
    \'menu_id\'         => \'\',
    \'echo\'            => true,
    \'fallback_cb\'     => \'wp_page_menu\',
    \'before\'          => \'\',
    \'after\'           => \'\',
    \'link_before\'     => \'\',
    \'link_after\'      => \'\',
    \'items_wrap\'      => \'<ul id="%1$s" class="%2$s">%3$s</ul>\',
    \'depth\'           => 0,
    \'walker\'          => \'\'
);
wp_nav_menu( $defaults );
walker的实现方式如下:

$walker = new WPSE90265_Nav_Menu_Walker();

wp_nav_menu( array( 
    # ...
    \'walker\' => $walker
    # ...
) );
它应该扩展默认的导航菜单漫游器,以便您只需覆盖需要重新定义的那些方法:

class WPSE90265_Nav_Menu_Walker extends Walker_Nav_Menu
{
    public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 )
    {
        if ( ! is_user_logged_in() )
            $output = str_replace( 
                 \'class="\'
                ,\'disabled class="\'
                ,$output
            );

        parent::start_el( $output, $item, $depth, $args, $id );
    }
}
请注意disabled 参数仅适用于特定的HTML元素/标记。请对其进行搜索,并根据其更改您的助行器。您也可以尝试添加onClick="return false;" 如果无法使用此类标签,则在助行器内部。

SO网友:MaxxDinh

因为菜单项不是按钮,所以无法使用。按钮(禁用);函数,将此代码与上述css组合:

jQuery(document).ready(function() {    
     $(\'#menu-item-1046\').click(function(){return false;});
});

结束