サポート » 使い方全般 » カスタム投稿ページのリンクが上手くいきません。

  • 解決済 necco388

    (@necco388)


    先日、カスタム投稿の画面が、独立のデザインであるにもかかわらず、index.phpのデザインに投稿という形になってしまう、という問題にアドバイスをいただき、無事解決することができました。ありがとうございます。
    ですが、リンクが上手くいきません。

    カスタム投稿名を、たとえばinformationとします。

    <li><a href="http://サイト名/information/">information</a></li>

    ですと、やっぱりindex.phpのデザインで投稿、という形になってしまいます。

    もしなにかおわかりになる方がおられましたら、アドバイスをよろしくお願いします。

14件の返信を表示中 - 1 - 14件目 (全14件中)
  • aタグの最後の / を削除してアクセスするとどうなりますか?

    トピック投稿者 necco388

    (@necco388)

    アドバイス、どうもありがとうございます!
    教えていただいたように
    <li><a href="http://サイト名/information/">information<a></li>
    としてみたのですが、あいかわらずindex.phpのところに投稿という形になってしまいます。

    パーマリンクの設定はどうなていますか? デフォルトなら、

    http://サイト名/?post_type=information

    ではないでしょうか。

    トピック投稿者 necco388

    (@necco388)

    kjmtshさん、書き込んでいただいてありがとうございます。
    パーマリンクの設定は、投稿名、を選んでいます。

    http://サイト名.com/information/

    です。
    ここまできて、問題が他にもあることがわかったので、基本的に間違っているような気がします。
    トップページ(home.php)
    ブログページ(index.php 投稿タイプです。)
    informationページ(single-information.php 付け加えた投稿タイプです。)
    すべてデザインが違います。
    トップページのアドレスは、http://サイト名.com/ なのですが、ブログページも同じアドレスで、http://サイト名.com/記事タイトル となっており、ブログページ全文を引き出すアドレスがありません…こういう、別にトップページを設けている場合、みなさんどうしてらっしゃるのでしょうか。

    初めてワードプレスでオリジナルのサイトを作っており、わからないことだらけで質問ばかりしてご迷惑おかけしますが、もしよろしければアドバイスをよろしくお願いします。

    ん?

    http://サイト名.com/information/

    このページには、何が表示されてほしいんですか?

    トピック投稿者 necco388

    (@necco388)

    わかりづらくてすみません。

    http://サイト名.com/information/

    では、日々更新するinformationです。
    ブログページとは別の、投稿ページです。

    カスタム投稿タイプ information に属する投稿が、全て表示されてほしいということでいいですか?

    また、現在は、information に属する投稿が表示されているけれども、index.php のデザインになっているという意味でよろしいですか?

    トピック投稿者 necco388

    (@necco388)

    はい、ただ、少しややこしいのですが…
    固定ページからページを確認、のところでは、ちゃんと 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 を作り、同様のマークアップをすればよいと思います。

    詳しくは、

    Template Hierarchy

    をご覧ください。日本語版へのリンクもあります。

    トピック投稿者 necco388

    (@necco388)

    長くお付き合いいただいて感謝します。

    まったくの初心者なのに無謀にも自作のテンプレートを作っていますので、archive.phpはありません…というか、その存在すら知りませんでした。お恥ずかしい。

    archive-information.php を作り、同様のマークアップをする、というのは、
    archive-information.php という名前のファイルを(内容は同じもので)作って、サーバーにアップするということでいいのでしょうか。
    早速試してみます!

    何か常識的なところの質問にお付き合いいただいて、どうもありがとうございます。

    archive-information.php という名前のファイルを(内容は同じもので)作って、サーバーにアップする

    single-information.php の中身がわからないので、何とも言えませんが、基本的にその通りでよいと思います。single-information.php のループは 1 回で終わりますが、archive-information.php の方は投稿が存在する限りループを継続するというところが違います。

    トピック投稿者 necco388

    (@necco388)

    早速作ってアップしたのですが、やっぱり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() の引数に上の指定があるかどうか、確認してみてください。

    ドキュメントは、下のリンク先です。

    Function Reference/register post type

    トピック投稿者 necco388

    (@necco388)

    なんと!出来ました!
    わ~うれしい!感動です!
    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')
        )
      );
    }
    ?>

    おかげさまで、この問題は解決したのですが、途中でも少し書いたトップページとブログページのアドレスの重複のことが新たに発生して、ここでお伺いしたいのですが、ここのトピックの問題は解決しましたので、新たにトピックを立てて質問させていただきます。
    本当に、どうもありがとうございました!

14件の返信を表示中 - 1 - 14件目 (全14件中)
  • トピック「カスタム投稿ページのリンクが上手くいきません。」には新たに返信することはできません。