Wordpres Bootstrap テーマ/フレームワークを使用しています。header.php ページで、ナビゲーション メニューを作成し、必要に応じてドロップダウン サブメニュー (サブリンク付き) を自動的に追加するスクリプトを作成しました。スクリプトはうまく機能しますが、問題は、投稿 (私の場合はページ) を表示すると、「見つかりません」というメッセージが表示されることです。代わりに、スクリプトを無効にしてデフォルトのメニューを使用すると、投稿 (ページ) が正しく表示されます。私のスクリプトに何か問題があると思います。ここに貼り付けて、誰かがこの謎を解いてくれることを願っています。
<?php
$menu_name = 'main_nav';
if ( ( $locations = get_nav_menu_locations() ) && isset( $locations[ $menu_name ] ) ) {
$menu = wp_get_nav_menu_object( $locations[ $menu_name ] );
$menu_items = wp_get_nav_menu_items($menu->term_id);
// --- Menu ---
echo '<ul id="menu-' . $menu_name . '" class="nav">';
foreach ( (array) $menu_items as $key => $menu_item ) {
$title = $menu_item->title;
$url = $menu_item->url;
$args_post = array(
'category_name' => $title,
'post_type' => 'page',
'orderby' => 'name',
'order' => 'ASC'
);
query_posts($args_post);
if (have_posts()){
?>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#"><?php echo $title; ?><b class="caret"></b></a>
<!-- Sub-menu -->
<ul class="dropdown-menu submenu">
<?php
while (have_posts()) : the_post();
?>
<li><a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php
endwhile;
?>
</ul> <!-- end Sub-menu -->
<?php
wp_reset_query();
} else {
echo '<li class="">';
echo '<a href="' . $url . '">' . $title . '</a>';
}
echo '</li>';
} // foreach
echo '</ul>';
} else {
echo '<ul><li>Menu "' . $menu_name . '" not defined.</li></ul>';
}
?>