2017-02-08 11 views
0

「マイアカウント」ページを指し示すセカンダリメニューにボタンを追加したいと思います。ユーザーがログインしている場合はボタンのテキストに「マイアカウント」が表示されます2次メニューのwoocommerce/sensei dynamic/changeableボタン

ユーザーがログアウトすると、「登録」と表示され、ログインページを指すボタンが表示されます。

これが可能なのは誰でも知っていますか?

私は私が近いと思うが、それが可能だ場合、私はわからないよ:

これは私の子テーマののfunctions.phpである:

function storefront_secondary_navigation() { 
     if (has_nav_menu('secondary')) { 
      ?> 
      <nav class="secondary-navigation" role="navigation" aria-label="<?php esc_html_e('Secondary Navigation', 'storefront'); ?>"> 
       <p>wat is deze</p> 
       <?php 


         if(! is_user_logged_in()) { 
         wp_nav_menu(
           array(
            'theme_location' => 'secondary', 
            'fallback_cb'  => '', 

           ) 

          ); 

         } 
         else{ 
         wp_nav_menu(
           array(
            'theme_location' => 'secondary', 
            'fallback_cb'  => '', 

           ) 

          ); 

         } 
echo "menu locations"; 
$hoi = get_nav_menu_locations(); 
var_dump($hoi); 
//outputs an array with 3 objects: 'primary', 'secondary', and 'handheld'. 
       ?> 
      </nav><!-- #site-navigation --> 
      <?php 
     } 
    } 

答えて

1

純粋なCSSのソリューション:Wordpressので

は、<body>要素は、ユーザーがログインしている場合、クラスlogged-inを持っているあなたは右のボタンを非表示にするには、これを使用できるように:。

これを追加します

#menu-item-8071 { 
    display: none; 
} 

body.logged-in #menu-item-8071 { 
    display: block; 
} 

body.logged-in #menu-item-8011 { 
    display: none; 
} 

Inste:あなたのstyle.cssへあなたのボタンに独自のcssクラスを追加することができます。まず、「スクリーンオプション」(メニューエディタページの上部)で「CSSクラス」を有効にする必要があります。各メニュー項目に追加のcssクラスを入力できるようになりました。

例:

.show-if-logged-in { 
    display: none; 
} 

body.logged-in show-if-logged-in { 
    display: block; 
} 

body.logged-in .hide-if-logged-in { 
    display: none; 
} 
+0

ああ、私がいることを知らなかっ:

だからあなたはこのCSSコードを使用することができます第二ボタンの最初のボタン

  • hide-if-logged-inため

    • show-if-logged-in 、それは非常に単純な解決策です!ありがとう私は私の代わりにこの1つを使用すると思います。 (アニメーションやその他の条件付きチェックをしない限り)。 – robertjuh

  • +0

    私は自分の答えを更新しました。多分あなたは2番目の解決策が好きかもしれません:) –

    +0

    うんうまくおかげで、今度はこのクラスに将来の要素をリンクできるので、重複したコードは必要ありません。 – robertjuh

    0

    私はそれを修正するために管理し、それが動作します。私はセカンダリメニューに2つの別々の項目をワードプレスメニューエディタで作成しました。次に、ユーザがログインしているかどうかをチェックし、それに応じて(メニューエディタで設定された対応するリンクを使用して)ボタンを非表示にするアクションフックを作成しました。

    これは簡単に保守できないということです。開発者はIDで要素を取得する必要があります。誰かがメニュー設定を変更した場合、IDが異なる可能性があります。

    function modify_secondary_menu_buttons() {     
         if(! is_user_logged_in()) { 
          echo '<script type="text/javascript"> 
           jQuery("#menu-item-8071").css("display", "none"); 
          </script>'; 
          return; 
    
         } 
         else{ 
          echo '<script type="text/javascript"> 
          // Document ready 
          jQuery(document).ready(function(){ 
           console.log("You are logged in"); 
    
           jQuery("#menu-item-8011").css("display", "none"); 
    
          }); 
          </script>';   
         }   
    } 
    add_action('wp_footer', 'modify_secondary_menu_buttons'); 
    
    関連する問題