navigation と呼んでいるのは wp_nav_menu() で表示されるはずのメニューのことですよね。
違っていたら、ここから先は無視してください。
wp_nav_menu() をパラメータ無しで呼び出した場合、状況に応じて、以下のように表示(HTMLソースへ出力)されます。
- 管理画面の 外観 > メニュー でメニューを1つ以上作成してあれば、最初に作られたメニューが表示されます。
- 外観 > メニュー でメニューをひとつも作成していなければ、固定ページ(リンク付き)一覧がメニューの代わりに表示されます(これは wp_nav_menu() の内部で wp_page_menu() が使われます)。
- 上記2.のとき、固定ページが一つもなければ
<div class="menu"></div>
とだけ出力されます。
なお、上記1.から3.の出力はコア関数 wp_nav_menu() の処理によるものなので、wp_nav_menu() のフィルターフックを利用すれば出力内容を変えることができます。
https://developer.wordpress.org/reference/functions/wp_nav_menu/
仰る通りの認識で正しいです。
外観 > メニュー でメニューをひとつも作成していないです。
自分で作ったナビゲーションのphpファイルをインクルードしただけなので、何も出ないのですね
footerは問題ないのでナビゲーションも問題ないと思っていました。
navigation.phpを別にダッシュボード上で作成したのですが、中身のソースをコピペすることができません。
下記などを見てもソースを追加することがきさいされていないのですが、ご存じないでしょうか?
https://bazubu.com/how-to-setup-wp-navigation-menu-23785.html
「navigation.phpを別にダッシュボード上で作成した」とは、どのような操作ですか。すみませんが想像がつかないので教えてください。
もし「管理画面の 外観 > メニュー のGUIを利用して」ということなのでしたら、失礼ながら @wordfile さんに誤解があるような気がします。(他の方法、例えば何かのWordPressプラグイン、を利用していらっしゃるのでしたら私にはわかりません。)
管理画面の「外観 > メニュー」で作ったメニューは、WordPressのデータベースの中に、メニュー専用のカスタム投稿タイプの投稿データとして格納されます。ですので「コピペできるPHPのソース」としては存在していません。
>>>
管理画面の「外観 > メニュー」で作ったメニューは、WordPressのデータベースの中に、メニュー専用のカスタム投稿タイプの投稿データとして格納されます。ですので「コピペできるPHPのソース」としては存在していません。
こちらの作業を行わないと自分で作ったnavigation.phpがindex.phpのカレントディレクトリに存在するだけでは認識しないという事だったので、上記作業でGUIでnavigation.phpを作ったという事です。
この作業がheader.phpなどと違って必須なのでsamplepageと出てきてしまったと認識したのですがそうではなかったのでしょうか?
また、プラグインは使っていません。
「samplepageと出てきてしまった」理由は、以下の条件が揃っていたためです。
- wp_nav_menu() をパラメータ無しで使っている
- 外観 > メニュー でメニューをひとつもつくっていない
- sample page という名前の固定ページが作られていた
自作のnavigation.phpファイルを表示させるために wp_nav_menu() は用途違いだと思います。
以下のコードは試されましたか?
<?php get_template_part( 'navigation' ); ?>
ありがとうございました。
やっとうまくいきました。
<?php //wp_nav_menu();こちらはうまくいかないので使わない。 ?>
こちらがだめだったのはindex.phpをカレントディレクトリにした相対パスを指定できない関数だったからなのでしょうか?
また、index.phpがカレントなら下記のようにしても問題ないのですね。
トップ以外のhtmlは子フォルダにまとめたいので。
<?php get_template_part( ‘./html/navigation’ ); ?>
ただ拡張子がいらない理由がよくわかりません。
また、実際の仕事ではフルスクラッチと違ってhtmlファイルはすべて、index.phpとカレントディレクトリに入れるという暗黙のルールがあるのでしょうか?
footerなどもbody終了タグはindex.phpにあえて残しその上のみを外部化するという暗黙のルールがあると聞きますがどうでしょうか。
解決済みになさいましたが、いくつか疑問を残しておられるようなのでコメントさせていただきます。
疑問が解消しなければ新しくトピックを開始してご質問ください。
その1。
<?php //wp_nav_menu();こちらはうまくいかないので使わない。 ?>
こちらがだめだったのはindex.phpをカレントディレクトリにした相対パスを指定できない関数だったからなのでしょうか?
関数 wp_nav_menu() は、別のPHPファイルを読み込む機能を持っていません。
wp_nav_menu() は、データベース内に保存済みのメニュー情報(←このメニュー情報はPHPファイルではありません)を読み出してHTML表示する関数です。
wp_nav_menu() の説明ページが下記URLにありますのでご覧ください。
https://wpdocs.osdn.jp/テンプレートタグ/wp_nav_menu
その2。
<?php get_template_part( ‘./html/navigation’ ); ?>
ただ拡張子がいらない理由がよくわかりません。
関数 get_template_part() が拡張子を自動的に補うからです。
get_template_part() の説明ページが下記URLにありますのでご覧ください。
https://wpdocs.osdn.jp/関数リファレンス/get_template_part
その3。
また、実際の仕事ではフルスクラッチと違ってhtmlファイルはすべて、index.phpとカレントディレクトリに入れるという暗黙のルールがあるのでしょうか?
footerなどもbody終了タグはindex.phpにあえて残しその上のみを外部化するという暗黙のルールがあると聞きますがどうでしょうか。
私はテーマを自作しないので不明です。しかし WordPress の公式ディレクトリーに掲載を希望するテーマは、レビュー(審査)を受けるそうです。レビューを通過する条件の中に、もしかすると、@wordfileさんが挙げているルールがあるかもしれません。この点については他に情報をお持ちの方がいらっしゃると思うので、新しくトピックを開始してご質問なさってはいかがですか。
>>>
関数 wp_nav_menu() は、別のPHPファイルを読み込む機能を持っていません。
wp_nav_menu() は、データベース内に保存済みのメニュー情報(←このメニュー情報はPHPファイルではありません)を読み出してHTML表示する関数です。
wp_nav_menu() の説明ページが下記URLにありますのでご覧ください。
https://wpdocs.osdn.jp/テンプレートタグ/wp_nav_menu
ありがとうございます。
<?php get_header(); ?>とfooterは可能なのに、<?php //wp_nav_menu();
は、ダッシュボード上でGUIでメニューの追加をしないと認識しないという事ですかね?
>>>
関数 get_template_part() が拡張子を自動的に補うからです。
get_template_part() の説明ページが下記URLにありますのでご覧ください。
https://wpdocs.osdn.jp/関数リファレンス/get_template_part
ファイルの拡張子を見てphpやhtmlを自動で付けてくれるので不要であり、
むしろ使ってはいけないのですね。
>>>
私はテーマを自作しないので不明です。しかし WordPress の公式ディレクトリーに掲載を希望するテーマは、レビュー(審査)を受けるそうです。レビューを通過する条件の中に、もしかすると、@wordfileさんが挙げているルールがあるかもしれません。この点については他に情報をお持ちの方がいらっしゃると思うので、新しくトピックを開始してご質問なさってはいかがですか。
私はむしろ自分のテーマを他の人に見られたくないのですが、まさかテーマを有効にしただけで勝手に公開されるなんてことはないですよね。
それが一番心配です。