特定のメニュークリックでイベント発生させたい
特定のメニュークリックでイベント発生させたい
- 
		投稿者投稿
- 
		
			
				
2021年7月23日 6:52 PM #54238
 gundam参加者■ 利用テーマとバージョン :G3 ■ 質問内容: 
 外観メニューでメニューを作成したのですが、
 このメニューの中の特定の一つでクリックすると、
 $_SESSION[‘aaa’] = ”;
 のように、$_SESSION[‘aaa’]に入っている変数を無しにしたいのですが、
 メニューのIDは、Chromeの検証でわかったのですが
 function aaa(){
 if (‘menu-item-0000’=???????){
 $_SESSION[‘aaa’] = ”;
 return;
 }
 }
 add_action(‘??????’, ‘aaa’);こんな感じで出来るのかなと思いましたが、 
 ここまでが限界でした。まずは、こういったことができるのでしょうか? 
 出来るのであれば、ご教授よろしくお願いいたします。2021年7月25日 9:26 AM #54259特定のメニュークリックでイベント発生させたい このタイトルからすると、PHP ではなく JavaScript を使う場面なのかな…という気がしましたが、もし、セッション変数に関する質問をされているのであれば、このコメントはスルーしてください。 どのような目的をお考えなのかを付け加えていただくと、もしかしたら回答が得られやすいかもしれません。 2021年7月25日 3:32 PM #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です。考え方的には、どんな感じになるのでしょうか? 2021年7月25日 7:02 PM #54273すみません。そういうことでしたら、私は PHP や JavaScript でセッション変数を扱った経験がないので、まともなアドバイスができる立場にありません。 どなたか詳しい方から有用な回答があるかもしれませんので、それをご期待ください。 でも…せっかくこのトピックに関わったので、勉強を兼ねてセッション変数を削除するシンプルなプログラムを作ってみました。 「特定のメニュークリック」したときにサイト内のどこかのページを表示するのではないかと思いますので、上記のプログラムのような動きでもよいのかもしれません。 2021年7月26日 2:48 PM #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を指定した割には、きちんと動作せず 
 指定している意味がありませんでした。結局は、そのページに行くためにメニューをクリックして
 セッション値をクリア出来たので良しとしました。
 個人的にもっと理解したいところでしたが、限界でした。また、対馬様のご提案で行くつく先で仕掛けるってのもありと思ったのですが 
 サイトの設計を見直すようになるため、今回はとりあえず
 上記で行いたいと思います。
 ありがとうございました。
- 
		投稿者投稿
- このトピックに返信するにはログインが必要です。

