カスタム投稿ページのリンクが上手くいきません。
-
先日、カスタム投稿の画面が、独立のデザインであるにもかかわらず、index.phpのデザインに投稿という形になってしまう、という問題にアドバイスをいただき、無事解決することができました。ありがとうございます。
ですが、リンクが上手くいきません。カスタム投稿名を、たとえばinformationとします。
<li><a href="http://サイト名/information/">information</a></li>ですと、やっぱりindex.phpのデザインで投稿、という形になってしまいます。
もしなにかおわかりになる方がおられましたら、アドバイスをよろしくお願いします。
-
aタグの最後の
/を削除してアクセスするとどうなりますか?アドバイス、どうもありがとうございます!
教えていただいたように
<li><a href="http://サイト名/information/">information<a></li>
としてみたのですが、あいかわらずindex.phpのところに投稿という形になってしまいます。パーマリンクの設定はどうなていますか? デフォルトなら、
http://サイト名/?post_type=informationではないでしょうか。
kjmtshさん、書き込んでいただいてありがとうございます。
パーマリンクの設定は、投稿名、を選んでいます。http://サイト名.com/information/です。
ここまできて、問題が他にもあることがわかったので、基本的に間違っているような気がします。
トップページ(home.php)
ブログページ(index.php 投稿タイプです。)
informationページ(single-information.php 付け加えた投稿タイプです。)
すべてデザインが違います。
トップページのアドレスは、http://サイト名.com/なのですが、ブログページも同じアドレスで、http://サイト名.com/記事タイトルとなっており、ブログページ全文を引き出すアドレスがありません…こういう、別にトップページを設けている場合、みなさんどうしてらっしゃるのでしょうか。初めてワードプレスでオリジナルのサイトを作っており、わからないことだらけで質問ばかりしてご迷惑おかけしますが、もしよろしければアドバイスをよろしくお願いします。
わかりづらくてすみません。
http://サイト名.com/information/では、日々更新するinformationです。
ブログページとは別の、投稿ページです。カスタム投稿タイプ information に属する投稿が、全て表示されてほしいということでいいですか?
また、現在は、information に属する投稿が表示されているけれども、index.php のデザインになっているという意味でよろしいですか?
はい、ただ、少しややこしいのですが…
固定ページからページを確認、のところでは、ちゃんと information のページが見れているのに、http://サイト名.com/information/とすると、index.phpのデザインで表示されます。
特にhttp://サイト名.com/information/という形にこだわっているわけではぜんぜんありません。「固定ページからページを確認」というのは、投稿を作成して、「投稿を表示」ボタンをクリックすると、ということでしょうか。このときは、single-information.php のデザインになるということですよね?
お使いのテーマに、テンプレートファイル archive.php あるいは、archive-information.php がありますか? もし、それらが存在しなければ、index.php が使われるのが正常動作です。
single-information.php は、投稿を一つずつ表示するのに使われますが、まとめて表示するときには使われないのです。この「まとめて表示すること」を、WordPress では「アーカイブ」と呼びます。だから、archive.php(汎用) または、archive-information.php(informationだけに適用) という名前のテンプレートが必要になります。
single-information.php と同じデザインにしたいのであれば、archive-information.php を作り、同様のマークアップをすればよいと思います。
詳しくは、
をご覧ください。日本語版へのリンクもあります。
長くお付き合いいただいて感謝します。
まったくの初心者なのに無謀にも自作のテンプレートを作っていますので、archive.phpはありません…というか、その存在すら知りませんでした。お恥ずかしい。
archive-information.php を作り、同様のマークアップをする、というのは、
archive-information.php という名前のファイルを(内容は同じもので)作って、サーバーにアップするということでいいのでしょうか。
早速試してみます!何か常識的なところの質問にお付き合いいただいて、どうもありがとうございます。
archive-information.php という名前のファイルを(内容は同じもので)作って、サーバーにアップする
single-information.php の中身がわからないので、何とも言えませんが、基本的にその通りでよいと思います。single-information.php のループは 1 回で終わりますが、archive-information.php の方は投稿が存在する限りループを継続するというところが違います。
早速作ってアップしたのですが、やっぱりindex.phpを読み込んでしまいます…。
ちなみに、ループするところの中身はこれです。
<?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); <h3><?php the_title(); ?></h3> <?php the_content(); ?> <?php endwhile; ?> <?php else : ?> <h3>記事がありません</h3> <p>表示する記事はありませんでした。</p> <?php endif; ?>ループは大丈夫です。ファイルを置く場所に間違いがなく、ファイル名も間違いがないとすると、カスタム投稿タイプの定義で、
has_archive => trueが抜けているかもしれませんね。投稿タイプの定義は、functions.php に書いてありますか、それとも何かプラグインを使っていますか? register_post_type() の引数に上の指定があるかどうか、確認してみてください。
ドキュメントは、下のリンク先です。
なんと!出来ました!
わ~うれしい!感動です!
kjmtshさん、このような初心者の質問に長い間お付き合いいただいて、的確なアドバイスを頂き大変感謝しております!
ちなみにコードはこう書きました。<?php add_action( 'init', 'create_post_type' ); function create_post_type() { register_post_type( 'information', array( 'labels' => array( 'name' => __( 'information' )), 'has_archive' => true, 'public' => true, 'menu_position' => 5, 'rewrite' => array('slug' => 'information') ) ); } ?>おかげさまで、この問題は解決したのですが、途中でも少し書いたトップページとブログページのアドレスの重複のことが新たに発生して、ここでお伺いしたいのですが、ここのトピックの問題は解決しましたので、新たにトピックを立てて質問させていただきます。
本当に、どうもありがとうございました!
トピック「カスタム投稿ページのリンクが上手くいきません。」には新たに返信することはできません。