質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

4411閲覧

wordpress wp_nav_menuで特定のメニューのみ投稿数を表示させる方法を教えてください。

tepin712

総合スコア20

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/10/25 15:53

編集2016/10/26 09:44

wordpressでオリジナルテーマを作成しています。
カスタムメニューを複数作成して、ある特定のカスタムメニューのみ
投稿数を表示させたいのですが実現出来ません。

カスタマイズの方法を教えてください。

php

1//function.php 2 3 register_nav_menus( array( 4 'primary' => esc_html__( 'Primary', 'theme' ), 5 'secondary' => esc_html__( 'Secondary', 'theme' ), 6 ) ); 7 8 add_filter( 'wp_nav_menu_objects', 'article_count' ); 9 function article_count( $items ) { 10 foreach ( $items as $item ) { 11 if ( $term = get_term( $item->object_id, $item->object ) ) { 12 $item->title .= '<span class="menu_count">'. $term->count .'</span>'; 13 } 14 $args[] = $item; 15 } 16 return $args; 17 }

以上のようなコードだとPrimaryとSecondary両方のカスタムメニューで
投稿数が表示されてしまいます。

Secondaryメニューのみ投稿数を表示するにはどうしたら良いのでしょうか。

<追記>

php

1<?php wp_nav_menu( array( 2 'container' => false , 3 'item_wrap' => '<ul>%3$s</ul>' , 4 'theme_location' => 'secondary', 5 'menu_id' => 'side_nav', 6 'menu_class' => 'side_nav' 7 ) ); ?>

このコードで表示したリスト(secondary)にだけ投稿数を表示する場合は
どのように記述したら良いのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

wp_nav_menu_objects の引数をもう一つとって、それを使ってどこのメニューか判定できそうです。

PHP

1add_filter( 'wp_nav_menu_objects', 'article_count', 10, 2 ); 2function article_count( $items, $args ) { 3 // $args->menu_id 4 // $args->menu->slug

また、下記のようなフィルターフックもあるので、メニュースラッグを指定するという手段もとれそうです。

PHP

1$items = apply_filters( "wp_nav_menu_{$menu->slug}_items", $items, $args );

【nav-menu-template.php in tags/4.6/src/wp-includes ? WordPress Trac】
https://core.trac.wordpress.org/browser/tags/4.6/src/wp-includes/nav-menu-template.php#L181


追記:

メニューはそれぞれ固有のidが出力されるので、それを確認してCSSで消す方法もあります。下記は書き方の一例です。メニューの設定の仕方によってidは変わるので、デベロッパーツールでご自身でお調べください。

CSS

1#side_nav .menu_count { 2 display: none; 3}

【Web開発でよく使う、特に使えるChromeデベロッパー・ツールの機能 - Build Insider】
http://www.buildinsider.net/web/chromedevtools/01

【第1回 詳説:デベロッパーツールの使い方:Google Chrome版Firebug:デベロッパーツール取扱説明書|gihyo.jp … 技術評論社】
http://gihyo.jp/dev/feature/01/devtools/0001?page=2

投稿2016/10/25 19:17

編集2016/10/29 02:39
kei344

総合スコア69398

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tepin712

2016/10/26 09:46

ご回答ありがとうございます。 ただ初心者の為、どのようにコードを記述して良いのかわかりません。 追記いたしましたコードで表示されるsecondaryメニューだけ投稿数を表示するには どのような記述になるのでしょうか。
kei344

2016/10/26 09:50

$args->container_idでもひろってみたらよいのでは?
tepin712

2016/10/26 12:12

すみません、以下のコードをどのように変えればよいのでしょうか。 add_filter( 'wp_nav_menu_objects', 'article_count' ); function article_count( $items ) { foreach ( $items as $item ) { if ( $term = get_term( $item->object_id, $item->object ) ) { $item->title .= '<span class="menu_count">'. $term->count .'</span>'; } $args[] = $item; } return $args; }
kei344

2016/10/28 10:15

質問文のコードと何も変わっていませんが・・・。
tepin712

2016/10/29 00:55

すみません、質問のコードをどのように変えればいいか、 わからないので変わっていません。。。
tepin712

2016/10/29 07:39

ありがとうございます。 不要なコードは減らしたいのでCSSでdisplay:none;ではなく<span class="menu_count">の出力を制御する方法はないのでしょうか・・・。
kei344

2016/10/29 10:02

> 出力を制御する方法はないのでしょうか 最初の回答でそれについては答えています。コードの書き方がわからないのであれば、PHPの入門書などで基礎から勉強されることをお勧めします。それがしたくないのだろうと思って、CSSでの代替案を提示したつもりです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問