このサイトを検索したところ、この質問に対して多くの 回答 が見つかりました。それらのほとんどは私のテーマに取り組んでいません。
これがI found の1つの解決策であり、それは私の必要性に従って働いています。
function wp_nav_menu_no_ul()
{
$options = array(
'echo' => false,
'container' => false,
'theme_location' => 'primary'
);
$menu = wp_nav_menu($options);
echo preg_replace(array(
'#^<ul[^>]*>#',
'#</ul>$#'
), '', $menu);
}
このコードはwp_nav_menu()
の始めと終わりにul
を削除します。だから私のテーマで私はちょうど書く
<ul class="primary-nav">
<?php wp_nav_menu_no_ul(); ?>
</ul>
しかし、adminを使ってメニューを追加またはアクティブ化しないと、問題が再び発生します。 http://domain.com/wp-admin/nav-menus.php
質問 :
メニューがアクティブかどうかにかかわらず、どうやって<div><ul>**</ul></div>
を削除しますか。お知らせ下さい
ようやくうまくいきました:) functions.php
function wp_nav_menu_no_ul()
{
$options = array(
'echo' => false,
'container' => false,
'theme_location' => 'primary',
'fallback_cb'=> 'default_page_menu'
);
$menu = wp_nav_menu($options);
echo preg_replace(array(
'#^<ul[^>]*>#',
'#</ul>$#'
), '', $menu);
}
function default_page_menu() {
wp_list_pages('title_li=');
}
header.php
<ul class="primary-nav">
<?php wp_nav_menu_no_ul(); ?>
</ul>
関数wp_nav_menuはfallback_cbという引数を取ります。これはメニューが存在しない場合に実行する関数の名前です。だからあなたのコードを次のように変更してください。
function wp_nav_menu_no_ul()
{
$options = array(
'echo' => false,
'container' => false,
'theme_location' => 'primary',
'fallback_cb'=> 'fall_back_menu'
);
$menu = wp_nav_menu($options);
echo preg_replace(array(
'#^<ul[^>]*>#',
'#</ul>$#'
), '', $menu);
}
function fall_back_menu(){
return;
}
メニューからコンテナを削除したり、 wp_nav_menu関数にいくつかの引数を渡して他のことを行うこともできます
お役に立てれば。
実際には、WordPressはデフォルトでこれをサポートしています。
wp_nav_menu(array(
'items_wrap' => '%3$s'
));
items_wrap
のデフォルトは<ul id=\"%1$s\" class=\"%2$s\">%3$s</ul>
です。
以下のコードはそれを簡単にするはずです。
<?php
$my_menu = array(
'menu' => 'main-menu',
'container' => '',
'items_wrap' => '%3$s'
);
wp_nav_menu( $my_menu );
?>
Wp_nav_menu関数のためにこのリンクを参照してください http://codex.wordpress.org/Function_Reference/wp_nav_menu
<a>
タグだけを印刷したい場合は、次のようにします。
$primaryMenu = array(
'theme_location' => 'primary',
'menu' => '',
'container' => '',
'container_class' => false,
'container_id' => '',
'menu_class' => 'menu',
'menu_id' => 'primary-menu',
'echo' => false,
'fallback_cb' => 'wp_page_menu',
'before' => '',
'after' => '',
'link_before' => '',
'link_after' => '',
'depth' => 0,
'walker' => ''
);
echo strip_tags( wp_nav_menu( $primaryMenu ), '<a>' );
私にとってうまくいったのはこれです。
<?php wp_nav_menu( array(
'container' => '',
'items_wrap' => '%3$s'
) ); ?>
それが役に立てば幸い。