質問編集履歴

4

誤字の修正

2021/09/08 04:35

投稿

necoyatsu
necoyatsu

スコア0

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- start_el()の条件分岐を修正することliのクラス付与もできました。
9
+ 詳細メニュー設定>CSS クラスでliのクラス付与もできました。
10
10
 
11
11
  divで囲い、そのdivとulに各クラスをつけるところまではできておらず、初期のdivなしulにclass="sub-menu"が付いた状態です。
12
12
 

3

一部問題の解決

2021/09/08 04:35

投稿

necoyatsu
necoyatsu

スコア0

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,9 @@
6
6
 
7
7
 
8
8
 
9
+ start_el()の条件分岐を修正することで、liのクラス付与もできました。
10
+
9
- 2階層(親から子ま)まではmenu_classを持ってるかで分岐させてといった記事を参考にしながら試してはいますが、2 ~ 3階層以降(〜孫まで)を階層で条件分岐させてdivと各クラスをつけるところまではできていません
11
+ divい、そのdivとulに各クラスをつけるところまではできておらず、初期のdivなしulにclass="sub-menu"が付た状態です
10
12
 
11
13
 
12
14
 
@@ -160,9 +162,9 @@
160
162
 
161
163
  ( $depth == 0 ? 'nav_global-parent' : 'nav_global-child' ),//1階層目のliにつけたいクラス
162
164
 
163
- ( $depth >=2 ? 'nav_global-child' : 'nav_global-grantChild' ),//2階層目のliにつけたいクラス
165
+ ( $depth >=1 ? 'nav_global-child' : 'nav_global-grantChild' ),//2階層目のliにつけたいクラス
164
-
166
+
165
- ( $depth >= 3 ? 'nav_global-grantChild' : '' ),//3階層目のliにつけたいクラス
167
+ ( $depth >= 2 ? 'nav_global-grantChild' : '' ),//3階層目のliにつけたいクラス
166
168
 
167
169
  );
168
170
 

2

タイトルの修正

2021/09/08 03:28

投稿

necoyatsu
necoyatsu

スコア0

test CHANGED
@@ -1 +1 @@
1
- wp_nav_menu()で子メニュー、孫メニューをdivで囲むには
1
+ wp_nav_menu()で孫メニューまで階層で分岐してdivで囲むには
test CHANGED
@@ -1,8 +1,20 @@
1
+ ###追記 : 警告エラーの解消
2
+
3
+ こちらの記事を参考に```start_lvl( &$output, $depth = 0, $args = array())```と```start_el( &$output, $item, $depth = 0, $args = array(), $id=0 )```に修正してみたところ、警告エラーは解消されました。
4
+
5
+ [WordPress で PHP7.0にアップデートしたら start_lvl() と start_el() でエラーが出た場合の対処法](https://kiraba.jp/post-4tyab22x/)
6
+
7
+
8
+
9
+ 2階層(親から子まで)まではmenu_classを持っているかで分岐させて、といった記事を参考にしながら試してはいますが、2 ~ 3階層以降(〜孫まで)を階層で条件分岐させてdivと各クラスをつけるところまではできていません。
10
+
11
+
12
+
1
13
  ### 前提・実現したいこと
2
14
 
3
15
 
4
16
 
5
- WordPress初者です。
17
+ WordPress、PHP者です。
6
18
 
7
19
  下記のようなことを考えています。
8
20
 
@@ -250,20 +262,6 @@
250
262
 
251
263
  ```
252
264
 
253
-
254
-
255
- ###追記 : 警告エラーの解消
256
-
257
- こちらの記事を参考に```start_lvl( &$output, $depth = 0, $args = array())```と```start_el( &$output, $item, $depth = 0, $args = array(), $id=0 )```に修正してみたところ、警告エラーは解消されました。
258
-
259
- [WordPress で PHP7.0にアップデートしたら start_lvl() と start_el() でエラーが出た場合の対処法](https://kiraba.jp/post-4tyab22x/)
260
-
261
-
262
-
263
- 2階層(親から子まで)まではmenu_classを持っているかで分岐させて、といった記事を参考にしながら試してはいますが、2 ~ 3階層以降(〜孫まで)を階層で条件分岐させてdivと各クラスをつけるところまではできていません。
264
-
265
-
266
-
267
265
  ### バージョン
268
266
 
269
267
  バージョン 5.8

1

警告エラーの解消

2021/09/08 02:35

投稿

necoyatsu
necoyatsu

スコア0

test CHANGED
File without changes
test CHANGED
@@ -98,19 +98,21 @@
98
98
 
99
99
  class megamenu extends Walker_Nav_Menu {
100
100
 
101
+ //start_lvlを修正
102
+
101
- function start_lvl( &$output, $depth ) {
103
+ function start_lvl( &$output, $depth = 0, $args = array()) {
102
104
 
103
105
 
104
106
 
105
107
  $indent = ( $depth > 0 ? str_repeat( "\t", $depth ) : '' );
106
108
 
107
- $display_depth = ( $depth + 1);
109
+ $display_depth = ( $depth + 1);//視覚的に分かりやすいように1〜
108
110
 
109
111
  $classes = array(
110
112
 
111
- 'nav_global-children',
113
+ 'nav_global-children',//2階層目のulに付けたいクラス
112
-
114
+
113
- ( $display_depth >=3 ? 'nav_global-grantChildren' : '' ),
115
+ ( $display_depth >=3 ? 'nav_global-grantChildren' : '' ),//3階層目のulに付けたいクラス
114
116
 
115
117
  );
116
118
 
@@ -118,9 +120,9 @@
118
120
 
119
121
  $classes_container = array(
120
122
 
121
- 'nav_global-children-container',
123
+ 'nav_global-children-container', //2階層目を囲うdivに付けたいクラス
122
-
124
+
123
- ( $display_depth >=3 ? 'nav_global-grantChildren-container' : '' ),
125
+ ( $display_depth >=3 ? 'nav_global-grantChildren-container' : '' ),//3階層目を囲うdivに付けたいクラス
124
126
 
125
127
  );
126
128
 
@@ -132,7 +134,7 @@
132
134
 
133
135
  }
134
136
 
135
-
137
+ //start_elを修正
136
138
 
137
139
  function start_el( &$output, $item, $depth, $args=array(), $id=0 ) {
138
140
 
@@ -144,11 +146,11 @@
144
146
 
145
147
  $depth_classes = array(
146
148
 
147
- ( $depth == 0 ? 'nav_global-parent' : 'nav_global-child' ),
149
+ ( $depth == 0 ? 'nav_global-parent' : 'nav_global-child' ),//1階層目のliにつけたいクラス
148
-
150
+
149
- ( $depth >=2 ? 'nav_global-child' : 'nav_global-grantChild' ),
151
+ ( $depth >=2 ? 'nav_global-child' : 'nav_global-grantChild' ),//2階層目のliにつけたいクラス
150
-
152
+
151
- ( $depth >= 3 ? 'nav_global-grantChild' : '' ),
153
+ ( $depth >= 3 ? 'nav_global-grantChild' : '' ),//3階層目のliにつけたいクラス
152
154
 
153
155
  );
154
156
 
@@ -156,8 +158,6 @@
156
158
 
157
159
 
158
160
 
159
- // passed classes
160
-
161
161
  $classes = empty( $item->classes ) ? array() : (array) $item->classes;
162
162
 
163
163
  $class_names = esc_attr( implode( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) ) );
@@ -166,7 +166,7 @@
166
166
 
167
167
  $output .= $indent . '<li id="nav-menu-item-'. $item->ID . '" class="' . $depth_class_names . ' ' . $class_names . '">';
168
168
 
169
-
169
+ //属性の設定
170
170
 
171
171
  $attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) .'"' : '';
172
172
 
@@ -212,38 +212,36 @@
212
212
 
213
213
  wp_nav_menu ( $megamenu = array (
214
214
 
215
+ 'menu' => '',
216
+
217
+ 'menu_class' => 'nav_global-parents',
218
+
219
+ 'menu_id' => '',
220
+
221
+ 'container' => 'nav',
222
+
223
+ 'container_class' => 'nav_global-container',
224
+
225
+ 'container_id' => '',
226
+
227
+ 'fallback_cb' => 'wp_page_menu',
228
+
229
+ 'before' => '',
230
+
231
+ 'after' => '',
232
+
233
+ 'link_before' => '',
234
+
235
+ 'link_after' => '',
236
+
237
+ 'echo' => true,
238
+
239
+ 'depth' => 0,
240
+
241
+ 'walker' => new Walker_Nav_Menu(),
242
+
215
243
  'theme_location' => 'global',
216
244
 
217
- 'menu' => 'global',
218
-
219
- 'menu_class' => 'nav_global-parents',
220
-
221
- 'menu_id' => '',
222
-
223
- 'container' => 'nav',
224
-
225
- 'container_class' => 'nav_global-container',
226
-
227
- 'container_id' => '',
228
-
229
- 'fallback_cb' => 'wp_page_menu',
230
-
231
- 'before' => '',
232
-
233
- 'after' => '',
234
-
235
- 'link_before' => '',
236
-
237
- 'link_after' => '',
238
-
239
- 'echo' => true,
240
-
241
- 'depth' => 0,
242
-
243
- 'walker' => new Walker_Nav_Menu(),
244
-
245
- 'theme_location' => '',
246
-
247
245
  'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>',
248
246
 
249
247
  ));
@@ -254,6 +252,16 @@
254
252
 
255
253
 
256
254
 
255
+ ###追記 : 警告エラーの解消
256
+
257
+ こちらの記事を参考に```start_lvl( &$output, $depth = 0, $args = array())```と```start_el( &$output, $item, $depth = 0, $args = array(), $id=0 )```に修正してみたところ、警告エラーは解消されました。
258
+
259
+ [WordPress で PHP7.0にアップデートしたら start_lvl() と start_el() でエラーが出た場合の対処法](https://kiraba.jp/post-4tyab22x/)
260
+
261
+
262
+
263
+ 2階層(親から子まで)まではmenu_classを持っているかで分岐させて、といった記事を参考にしながら試してはいますが、2 ~ 3階層以降(〜孫まで)を階層で条件分岐させてdivと各クラスをつけるところまではできていません。
264
+
257
265
 
258
266
 
259
267
  ### バージョン