web-dev-qa-db-ja.com

プログラム的に(PHP)はnrを取得します。メインナビゲーションメニューの項目の一覧

私は番号を取得する必要があります。プライマリナビゲーションメニューの項目の数。各リストアイテムの幅をパーセンテージで決定するためにこれが必要です。だから私はまたどういうわけかリスト項目のcss width属性を変更/追加する必要があります。それもまだやるべき方法を考え出していません...最初の試みとして私は機能を試しました wp_get_nav_menu_object 。私は15のテンプレートから子テーマを開発しています。最初のナビゲーション(元のテーマフォルダのsidebar.phpファイルから直接コピーしたもの)をロードし、その後すぐにコードスニペットを使用してwp_get_nav_menu_objectを呼び出すカスタムホームページを作成しました。

<?php if (has_nav_menu('primary')) : ?>   
   <nav id="site-navigation" class="main-navigation" role="navigation">
      <?php
       // Primary navigation Menu
       wp_nav_menu(array(
         'menu_class' => 'nav-menu',
         'theme_location' => 'primary',
       ));
       // none of these seem to work...
       //$menu = wp_get_nav_menu_object('menu-primary-menu');
       $menu = wp_get_nav_menu_object('primary');
       echo $menu->count;
     ?>   
   </nav> <!-- /.main-navigation --> 
<?php endif; ?>

私は私がjQuery/JavaScriptソリューション(実際には今私がしていることです)で行くことができることを知っています、しかしそれは理想的ではありません。やりたいことのためには、Walkerクラスの助けを借りて自分自身のカスタムプライマリナビゲーションメニューを作成する必要があると疑い始めています。誰が最善のアプローチが何であるかについて私に助言することができますか?

1
MJD82

wp_get_nav_menu_object()関数に正しいパラメーターを指定していません。メニューIDまたはメニュースラッグが必要ですが、メニューテーマの場所を指定しています。明らかに、私はあなたのメニューのIDやスラグが何であるかをあなたに言うことはできません。

テーマの場所に割り当てられているメニューのメニューIDを取得する1つの方法は、get_nav_menu_locations()を使用することです。

$menu = wp_get_nav_menu_object( get_nav_menu_locations()['primary'] );
echo $menu->count;
1
cybmeta