ユーザーが特別なナビゲーションバーに登録した場合、私が提供するいくつかの機能をユーザーに見せたいのですが。私はこれをログイン版とログアウト版のために作成しました:
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にはほとんど手を出していません。
を引数 で見ると、カスタムナビゲーションメニューの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 = 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;"
を追加することもできます。
メニュー項目はボタンではないため、.button(無効)は使用できません。このコードと上記のCSSを組み合わせてください。
jQuery(document).ready(function() {
$('#menu-item-1046').click(function(){return false;});
});