サポート » 使い方全般 » カスタム投稿の個別記事が表示されない

  • 解決済 k_aruno

    (@k_aruno)


    現在カスタム投稿にてページを制作中なのですが、
    一覧ページ(archive-aaa.php)から個別記事(single-aaa.php)にリンクで飛ぶと
    single-aaa.phpが読み込まれずindex.phpが読み込まれてしまいます。

    状況的には
    http://ja.forums.wordpress.org/topic/4161
    こちらの方と同様の症状なのですが、プラグインを全部無効にしてみたり
    アップロードしなおしてみたりと試してみたのですが
    single-aaa.phpを読み込む事ができなかった為投稿させていただきました。
    (現在、公開しているため再インストールなどは試していません。)

    また、カスタム投稿[aaa]を作成する前にほぼ同じ内容のカスタム投稿[bbb]を作成しており、その個別ページ(single-bbb.php)を読み込む事はできている状況です・・・。

    テーマはオリジナルの物を使用しています。
    カスタム投稿に関してプラグインは使っていません。

    どなたかお力添えを宜しくお願い致します。

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    うーん、ちょっと文章だけでは難しいですね。。。
    参考元のスレッドみたいに、パーマリンクをいったんデフォルトにもどしてみたりしても同じでしょうか?
    また、試しに別のカスタム投稿タイプ[ccc]、single-ccc.php、archive-ccc.phpを作ってみた時はどうでしょう??

    気になるのは

    single-aaa.phpが読み込まれずindex.phpが読み込まれてしまいます。

    single-aaa.phpが読めなければ、次に読まれるのはsingle.phpのはずなんですが
    お使いのテーマにsingle.phpってありますか?
    ないならともかく、single.phpがあるのにindex.phpが適用されるとなるとリライトルールでなにか変な設定になってるかもしれません。ちょっと確認してみてください。

    たとえば固定ページとか投稿とかでaaaというスラッグのものを作ってて、パーマリンク設定次第でバッティングしてるとかということはありえるかもしれません。

    トピック投稿者 k_aruno

    (@k_aruno)

    ご返信ありがとうございます。

    参考元を見た際にパーマリンクをデフォルトに戻してみたりしましたがダメでした。
    また、カスタム投稿タイプも[aaa],[bbb],[ccc],[ddd]があるのですが[aaa]のみsingle-aaa.phpが読み込まれない状況です。

    single.phpに関してもsingle-aaa.phpと同様の内容のものを作成しておいたのですがindex.phpが適用されているようです。ちなみにtaxonomy-aaa.phpは適用されています。

    固定ページ、投稿でもaaaというスラッグは使っておりません。
    パーマリンクはカスタム構造を使用していて
    /%category%/%post_id% を指定していて
    http://example.com/aaa/1.html というアドレスにはなっています。

    gogoweb

    (@gogoweb)

    404.phpを作成してみてページをみた場合index.phpと404.phpどちらが読み込まれますか?
    404が読み込まれる場合はパーマリンクが間違っているか、後怪しいとしたら
    register post typeの設定が怪しい可能性があります。

    トピック投稿者 k_aruno

    (@k_aruno)

    404.phpを作成してみたところ404.phpが読み込まれました。
    ということはパーマリンクが間違っているということでしょうか…。

    <?php while ( have_posts() ) : the_post(); ?>
             <a href="<?php echo get_permalink($post); ?>"><?php the_title(); ?></a>
    <?php endwhile; ?>

    現在このような形で取得を行っています。
    これと全く同じ処理を行っているsingle-bbb.phpは正常に機能しています。

    トピック投稿者 k_aruno

    (@k_aruno)

    register post typeに関しては以下の様な設定になっています。

    カスタム投稿タイプ[aaa]

    register_post_type(
    'aaa',
      array(
      'label' => 'AAA',
      'hierarchical' => false,
      'public' => true,
      'query_var' => false,
      'menu_position' => 5,
      'has_archive' => true,
      'supports' => array('title','editor','author')
      )
    );

    カスタム投稿タイプ[bbb]

    register_post_type(
    'bbb',
      array(
      'label' => 'BBB',
      'hierarchical' => false,
      'public' => true,
      'query_var' => false,
      'menu_position' => 5,
      'has_archive' => true,
      'supports' => array('title','editor','author')
      )
    );

    gogoweb

    (@gogoweb)

    get_permalink($post)はet_permalink($post->ID)だと思いますけどget_permalink($post)でもパーマリンク拾ってきたっけ?
    get_permalinkで取得できるURLは投稿画面から表示されるパーマリンクと同じでしょうか?

    また、/%category%/%post_id%  というパーマリンク指定では
    http://example.com/aaa/1.html というアドレスにならないと思うのですが何かプラグインを使ってリライトルールを変更していますか?

    トピック投稿者 k_aruno

    (@k_aruno)

    get_permalinkで取得できるURLは投稿画面で表示されているパーマリンクと同一です。
    試しに、get_permalink($post->ID)でも試したところ結果は変わらずでした…。

    パーマリンク指定ではfunction.phpにて以下のリライトルールを使用しています。

    add_action('init', 'myposttype_rewrite');
    function myposttype_rewrite() {
        global $wp_rewrite;
    
        $queryarg = 'post_type=aaa&p=';
        $wp_rewrite->add_rewrite_tag('%aaa_id%', '([^/]+)',$queryarg);
        $wp_rewrite->add_permastruct('aaa', '/aaa/%aaa_id%.html', false);
    
    }
    add_filter('post_type_link', 'myposttype_permalink', 1, 3);
    function myposttype_permalink($post_link, $id = 0, $leavename) {
        global $wp_rewrite;
        $post = &get_post($id);
        if ( is_wp_error( $post ) )
            return $post;
        $newlink = $wp_rewrite->get_extra_permastruct($post->post_type);
        $newlink = str_replace('%'.$post->post_type.'_id%', $post->ID, $newlink);
        $newlink = home_url(user_trailingslashit($newlink));
        return $newlink;
    }

    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    ちょっと顔を出さない間にgogowebさんの的確なフォロー感謝です。

    パーマリンク指定ではfunction.phpにて以下のリライトルールを使用しています。

    犯人はこいつですね。ばっちり’aaa’だけに作用する記述…
    (こういう特殊な処理を先に教えていただけると!)

    元ネタはこれでしょうか。
    http://webpaprika.com/387.html

    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    カスタム投稿タイプのパーマリンクでpost_idを使いたい場合ですが、
    各種同様のネタを扱っている日本語のブログの中で、以下の記事が一番細かなところまで説明してくれている印象でした。
    http://yurubu.org/%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%9D%E3%82%B9%E3%83%88%E3%81%AE%E3%83%91%E3%83%BC%E3%83%9E%E3%83%AA%E3%83%B3%E3%82%AF%E3%82%92%E6%8A%95%E7%A8%BFid%E3%81%AB%E3%81%99%E3%82%8B/

    ココでのポイントは ‘rewrite’ オプションですかね。
    with_front を false にしないと、先のパーマリンク設定の影響を受けて /blog/news となってしまいます

    この辺りのケアが不足していて404になっているのかなと。

    ちなみに、k_arunoさんが貼ってくださったfunction.phpの記述を自分の環境でも適用したら、404.phpが適用されました。
    その後、上記記事の通りにwith_frontをfalseにしたら、リライトルールの書き換えはうまくいきました。(パーマリンクを空更新するかflush_rewrite_rulesを実行するのをおわすれなく)

    トピック投稿者 k_aruno

    (@k_aruno)

    mypacecreator様、gogoweb様
    無事解決することができました!

    おっしゃる通りfunction.phpのリライトルールが原因でした…。
    よく見直していたつもりでしたが一箇所’aaa’→’aaa ‘と半角スペースが入っていました。
    こんな初歩的なケアレスミスで振り回してしまい申し訳ありませんでした。

    元ネタはズバリです!

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • トピック「カスタム投稿の個別記事が表示されない」には新たに返信することはできません。