サポート » 使い方全般 » インクルードしてもnavgationが表記されない。

  • 解決済 wordfile

    (@wordfile)


    https://ja.wordpress.org/support/topic/header-php%e3%81%ae%e4%b8%ad%e3%81%abnavigation%e3%81%8c%e3%81%82%e3%82%8b%e3%81%ae%e3%81%a7%e3%81%99%e3%81%8c%e3%80%81sample-page-%e3%81%a8%e5%87%ba%e3%81%a6%e3%81%8d%e3%81%be%e3%81%99%e3%80%82/#post-217497
    の続き

    その後Sample Page というコピーサイトが発見されそれを削除したところリンクは出てこなくなりました。
    ただ問題が解決したわけではなくnavgationは空白になっています。

    オリジナルのテーマなので、index.phpないにheader.phpをインクルードしさらにheader.php内に<?php wp_nav_menu(); ?>を記載しているのみです。

    もしかして、
    このソースでダッシュボード上でテーマをインストールすれば自動的にヘッダーができると思ったのですが、
    ダッシュボード上でナビゲーションを作ってそこに自分の作ったnavigation.phpのソースコードを張り付けないといけないのですか?
    navigation以外はそのような作業をせずにうまくいっているのですがnavigationだけ例外ないのでしょうか?
    それともheaderとfooterが例外的にGUIでの作成作業が不要という事でしょうか?

    index.php
    <?php get_header(); ?>
    <main role="main" >
    </main>
    <?php get_footer(); ?>

    header.php

    <?php wp_nav_menu(); ?>
    <ul class="c">
    ~

    という形です。

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • navigation と呼んでいるのは wp_nav_menu() で表示されるはずのメニューのことですよね。
    違っていたら、ここから先は無視してください。

    wp_nav_menu() をパラメータ無しで呼び出した場合、状況に応じて、以下のように表示(HTMLソースへ出力)されます。

    1. 管理画面の 外観 > メニュー でメニューを1つ以上作成してあれば、最初に作られたメニューが表示されます。
    2. 外観 > メニュー でメニューをひとつも作成していなければ、固定ページ(リンク付き)一覧がメニューの代わりに表示されます(これは wp_nav_menu() の内部で wp_page_menu() が使われます)。
    3. 上記2.のとき、固定ページが一つもなければ <div class="menu"></div> とだけ出力されます。

    なお、上記1.から3.の出力はコア関数 wp_nav_menu() の処理によるものなので、wp_nav_menu() のフィルターフックを利用すれば出力内容を変えることができます。
    https://developer.wordpress.org/reference/functions/wp_nav_menu/

    トピック投稿者 wordfile

    (@wordfile)

    仰る通りの認識で正しいです。
    外観 > メニュー でメニューをひとつも作成していないです。

    自分で作ったナビゲーションのphpファイルをインクルードしただけなので、何も出ないのですね

    footerは問題ないのでナビゲーションも問題ないと思っていました。

    トピック投稿者 wordfile

    (@wordfile)

    navigation.phpを別にダッシュボード上で作成したのですが、中身のソースをコピペすることができません。

    下記などを見てもソースを追加することがきさいされていないのですが、ご存じないでしょうか?
    https://bazubu.com/how-to-setup-wp-navigation-menu-23785.html

    「navigation.phpを別にダッシュボード上で作成した」とは、どのような操作ですか。すみませんが想像がつかないので教えてください。

    もし「管理画面の 外観 > メニュー のGUIを利用して」ということなのでしたら、失礼ながら @wordfile さんに誤解があるような気がします。(他の方法、例えば何かのWordPressプラグイン、を利用していらっしゃるのでしたら私にはわかりません。)

    管理画面の「外観 > メニュー」で作ったメニューは、WordPressのデータベースの中に、メニュー専用のカスタム投稿タイプの投稿データとして格納されます。ですので「コピペできるPHPのソース」としては存在していません。

    トピック投稿者 wordfile

    (@wordfile)

    >>>
    管理画面の「外観 > メニュー」で作ったメニューは、WordPressのデータベースの中に、メニュー専用のカスタム投稿タイプの投稿データとして格納されます。ですので「コピペできるPHPのソース」としては存在していません。

    こちらの作業を行わないと自分で作ったnavigation.phpがindex.phpのカレントディレクトリに存在するだけでは認識しないという事だったので、上記作業でGUIでnavigation.phpを作ったという事です。
    この作業がheader.phpなどと違って必須なのでsamplepageと出てきてしまったと認識したのですがそうではなかったのでしょうか?

    また、プラグインは使っていません。

    「samplepageと出てきてしまった」理由は、以下の条件が揃っていたためです。

    1. wp_nav_menu() をパラメータ無しで使っている
    2. 外観 > メニュー でメニューをひとつもつくっていない
    3. sample page という名前の固定ページが作られていた

    自作のnavigation.phpファイルを表示させるために wp_nav_menu() は用途違いだと思います。

    以下のコードは試されましたか?
    <?php get_template_part( 'navigation' ); ?>

    トピック投稿者 wordfile

    (@wordfile)

    ありがとうございました。
    やっとうまくいきました。

    <?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さんが挙げているルールがあるかもしれません。この点については他に情報をお持ちの方がいらっしゃると思うので、新しくトピックを開始してご質問なさってはいかがですか。

    トピック投稿者 wordfile

    (@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さんが挙げているルールがあるかもしれません。この点については他に情報をお持ちの方がいらっしゃると思うので、新しくトピックを開始してご質問なさってはいかがですか。

    私はむしろ自分のテーマを他の人に見られたくないのですが、まさかテーマを有効にしただけで勝手に公開されるなんてことはないですよね。
    それが一番心配です。

    このトピックは解決済みになっているので

    まだ続いている下記トピックの方へコメントさせていただきます。
    https://ja.wordpress.org/support/topic/header-phpなどはどこで分離すべき?/

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • トピック「インクルードしてもnavgationが表記されない。」には新たに返信することはできません。