回答編集履歴

1

source見直し訂正

2021/03/14 21:31

投稿

FromMZ1500
FromMZ1500

スコア496

test CHANGED
@@ -107,3 +107,93 @@
107
107
 
108
108
 
109
109
  ```
110
+
111
+
112
+
113
+ <以下、翌朝追記>
114
+
115
+
116
+
117
+ 見直してみたら無駄なことやってるので、なおしました。こちらで。
118
+
119
+ (簡単になりすぎたので、なさりたい結果がこれでいいのかは自信なし)
120
+
121
+
122
+
123
+ ```PHP
124
+
125
+ if ( ( $locations = get_nav_menu_locations() ) && isset( $locations[ $menu_name ] ) ) {
126
+
127
+ // メニュー内に作られたナビゲーションメニューのアイテム
128
+
129
+ $menu = wp_get_nav_menu_object( $locations[ $menu_name ] );
130
+
131
+ //ナビゲーションメニューデータを取得
132
+
133
+ $menu_items = wp_get_nav_menu_items($menu->term_id);
134
+
135
+
136
+
137
+ $ID_ThisPage = null;
138
+
139
+ $ID_Root = null;
140
+
141
+ foreach ( (array) $menu_items as $key => $menu_item ) {
142
+
143
+ if ($menu_item->menu_item_parent == 0 ){
144
+
145
+ //menu_item_parent が 0 なら ルートの親 (1件必ずある)
146
+
147
+ $ID_Root = $menu_item->ID;
148
+
149
+ }
150
+
151
+ if ($menu_item->object_id == get_the_ID()){
152
+
153
+ //PostIDが一致するのがThisページのmenu
154
+
155
+ $ID_ThisPage = $menu_item->ID;
156
+
157
+ }
158
+
159
+ }
160
+
161
+
162
+
163
+ if ($ID_Root != $ID_ThisPage) {
164
+
165
+ // ルート以外の場合
166
+
167
+ $menu_list = '<ul>';
168
+
169
+ foreach ( (array) $menu_items as $key => $menu_item ) {
170
+
171
+ // 第二階層のメニューのみを表示
172
+
173
+ if ($menu_item->menu_item_parent == $ID_Root) {
174
+
175
+ $title = $menu_item->title;
176
+
177
+ $url = $menu_item->url;
178
+
179
+ $menu_list .= '<li id="test" class='.$current.'><a href="'.$url.'">'.$title.'</a></li>';
180
+
181
+ }
182
+
183
+ }
184
+
185
+ $menu_list .= '</ul>';
186
+
187
+ }
188
+
189
+ } else {
190
+
191
+ $menu_list = '<ul><li>Menu "' . $menu_name . '" not defined.</li></ul>';
192
+
193
+ }
194
+
195
+ ?>
196
+
197
+ <div><?php echo $menu_list; ?></div>
198
+
199
+ ```