特定のメニュークリックでイベント発生させたい

VWSとは フォーラム Lightning 特定のメニュークリックでイベント発生させたい

特定のメニュークリックでイベント発生させたい

  • このトピックには4件の返信、2人の参加者があり、最後にgundamにより2ヶ月前に更新されました。
5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • 投稿者
    投稿
  • #54238

    gundam
    参加者

    ■ 利用テーマとバージョン :G3

    ■ 質問内容:
    外観メニューでメニューを作成したのですが、
    このメニューの中の特定の一つでクリックすると、
    $_SESSION[‘aaa’] = ”;
    のように、$_SESSION[‘aaa’]に入っている変数を無しにしたいのですが、
    メニューのIDは、Chromeの検証でわかったのですが
    function aaa(){
    if (‘menu-item-0000’=???????){
    $_SESSION[‘aaa’] = ”;
    return;
    }
    }
    add_action(‘??????’, ‘aaa’);

    こんな感じで出来るのかなと思いましたが、
    ここまでが限界でした。

    まずは、こういったことができるのでしょうか?
    出来るのであれば、ご教授よろしくお願いいたします。

    #54259

    特定のメニュークリックでイベント発生させたい

    このタイトルからすると、PHP ではなく JavaScript を使う場面なのかな…という気がしましたが、もし、セッション変数に関する質問をされているのであれば、このコメントはスルーしてください。

    どのような目的をお考えなのかを付け加えていただくと、もしかしたら回答が得られやすいかもしれません。

    #54266

    gundam
    参加者

    こんにちは。対馬様ありがとうございます。

    はい。JavaScriptでも良いのです。
    初心者なもので、functions.phpに書ければ良いかなと思いPHPで探りました。
    結局は、ある特定のメーニューをクリックした時に
    $_SESSION[‘aaa’] に入ってる値を消したいだけなのですが。
    (ちなみに$_SESSION[‘aaa’] は、getで入れたりしています)
    また、いろいろググってみたところ
    外観メニューのcss classに任意の文字列をつけて
    javaScriptで出来るみたいな記事を見つけたのですが
    いまいち、出来ませんでした。
    G3の場合、どのような感じで出来ますでしょうか?
    functions.phpに下記のように書いたのですが
    全くダメでした。

    function wp_contact_menu_atts($atts, $item, $args)
    {
    $menu_target = 2257;
    if ($item->ID == $menu_target) {
    $atts[‘onclick’] = ‘return false’;
    }
    return $atts;
    echo <<<EOM
    <script type=”text/javascript”>
    $(function(){
    $(“.sessionnul”).click(function(){
    window.sessionStorage.removeItem([‘kna’]);
    });
    });
    </script>
    EOM;
    }
    add_filter(‘nav_menu_link_attributes’, ‘wp_contact_menu_atts’, 10, 3);
    ※ちなみに.sessionnulはcss classでつけた文字列
    ※2257はメニューのIDです。

    考え方的には、どんな感じになるのでしょうか?

    #54273

    すみません。そういうことでしたら、私は PHP や JavaScript でセッション変数を扱った経験がないので、まともなアドバイスができる立場にありません。

    どなたか詳しい方から有用な回答があるかもしれませんので、それをご期待ください。

    でも…せっかくこのトピックに関わったので、勉強を兼ねてセッション変数を削除するシンプルなプログラムを作ってみました。

    セッション変数のテスト(表示回数をカウントアップ)

    「特定のメニュークリック」したときにサイト内のどこかのページを表示するのではないかと思いますので、上記のプログラムのような動きでもよいのかもしれません。

    #54303

    gundam
    参加者

    対馬様
    ありがとうございます。
    試行錯誤して、結局は下記のようになりました。
    function add_specific_menu_atts($atts, $item, $args)
    {
    $menu_items = [2257, 2670, 2671, 2672, 2673];
    if (in_array($item->ID, $menu_items)) {
    unset($_SESSION[‘kno’]);
    }

    return $atts;
    }
    add_filter(‘nav_menu_link_attributes’, ‘add_specific_menu_atts’, 10, 3);

    ただ、メニューIDを指定した割には、きちんと動作せず
    指定している意味がありませんでした。結局は、そのページに行くためにメニューをクリックして
    セッション値をクリア出来たので良しとしました。
    個人的にもっと理解したいところでしたが、限界でした。

    また、対馬様のご提案で行くつく先で仕掛けるってのもありと思ったのですが
    サイトの設計を見直すようになるため、今回はとりあえず
    上記で行いたいと思います。
    ありがとうございました。

5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • このトピックに返信するにはログインが必要です。