• 解決済 marori

    (@marori)


    閲覧ありがとうございます。いつもお世話になっております。

    「Custom Post Type Permalinks」を使用してサイドバーに月別アーカイブを表示させるようにしたいのですが、「2013年8月」や「2013年7月」と投稿月のリスト表示はされても、各月をクリックしても月別の一覧ではなく分類のされていない全件表示となってしまいます。
    月別の投稿数を表示させるようにしてみると、各月の投稿数が月の横に「(3)」といった形で表示されるので、月ごとの投稿数の認識はされているようです。
    各記事の投稿時の分類が問題になっているかと思いますが、該当する箇所が不明です。

    以下、環境です。
    ・バージョン:3.6
    ・使用テーマ:オリジナル
    ・サーバー環境:さくらインターネット スタンダードプラン
    ・確認ブラウザ:firefox、safari、chorome
    ・カスタム投稿に使用しているプラグイン:
    Custom Post Type UI、Custom Post Type Permalinks
    ・カスタム投稿のパーマリンク: /%post_id%/

    なお、アーカイブのアドレスについては以下のような形です。
    ・アーカイブ本体
    http://サイトアドレス/blog/
    ・月別(例:2013年8月)
    http://サイトアドレス/blog/date/2013/08/

    月別アーカイブの表示箇所は下記のようになっています。
    <?php wp_get_archives('type=monthly&post_type=blog&show_post_count=true'); ?>

    このように月別アーカイブが月ごとの投稿を正常に表示しない状況の場合、どの点を確認すればよろしいのか、ご助言ご指摘をお願いします。
    よろしくお願いします。

15件の返信を表示中 - 1 - 15件目 (全16件中)
  • モデレーター gatespace

    (@gatespace)

    「Custom Post Type Permalinks」はカスタム投稿タイプのパーマリンクを「投稿」のパーマリンクとは別に設定するためのプラグインで、月別アーカイブのリストを表示させるためのプラグインではありません。

    wp_get_archivesにカスタム投稿タイプを指定するパラメーターはありません。
    別途カスタマイズが必要です。

    過去にこのフォーラムで同じような投稿がありましたのでそちらもご覧ください。

    トピック投稿者 marori

    (@marori)

    gatespace様

    いつもお世話になっています。

    Custom Post Type Permalinksは月別アーカイブと関係がないのですね。
    パーマリンク関連のプラグインであるとは理解しておりましたが、カスタム投稿の月別アーカイブについて検索をしていると、Custom Post Type Permalinksを導入すると簡単に月別アーカイブが出力できる、とあったので、そういった機能も搭載されているのだと勘違いをしておりました。
    ご指摘ありがとうございます。

    >wp_get_archivesにカスタム投稿タイプを指定するパラメーターはありません。
    そうなんですね!リストの表示だけはされていたので、どこか他の場所におかしな記述があるのだと見直しばかりをしていました。

    お教え頂いたページに加え、下記のサイトも参考にしてみました。

    ・webデザイナーのしおり様
    wordpress サイドバーにカスタム投稿の分類、月別アーカイブ、最新記事一覧を表示する方法

    お教え頂いたページや、上記サイトをそのままに記述を行っていますが(ポストタイプは変更しています)、やはりアーカイブのリストは表示されるのですが、肝心の月別のページは相変わらずの全件表示のままです。

    また、お教え頂いたページの中で「data.php」とあるのですが、もしかしてこれがないことが原因でしょうか。archive.phpのみでは表示ができないのでしょうか。

    モデレーター gatespace

    (@gatespace)

    date.phpが無ければarchive.phpが使われるだけです。

    テンプレート階層 – WordPress Codex 日本語版

    まず、カスタム投稿タイプの月別アーカイブリンクのURLがどのような形になっているか確認してください。

    モデレーター gatespace

    (@gatespace)

    ああ、スイマセン。作者のサイト確認したらカスタム投稿タイプの月別アーカイブサポートしてました。
    http://www.torounit.com/plugins/custom-post-type-permalinks/

    私の最初の投稿は忘れてください。

    その上で、作者のリリースノート見ましたが、

    has_archiveがtrueのときだけアーカイブを設定するようにしました。

    となっているのでカスタム投稿タイプの設定を確認してください

    トピック投稿者 marori

    (@marori)

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

    >カスタム投稿タイプの月別アーカイブリンクのURLがどのような形になっているか
    上記についてですが、下記のような形で表示されています。

    ・アーカイブ本体
    http://サイトアドレス/blog/
    ・月別(例:2013年8月)
    http://サイトアドレス/blog/date/2013/08/

    dateというファイルを作っていなくてもアドレス内に含まれているので、date.phpがないせいだろうかと思いましたが、やはりarchive.phpがあれば問題ないのですね。

    has_archiveについても確認しました。trueになっています。

    パーマリンクの設定を「/%post_id%/」にしているのですが、これも影響してきますか?

    モデレーター gatespace

    (@gatespace)

    ちょっとデフォルトのパーマリンクで確認してもらえますか?

    トピック投稿者 marori

    (@marori)

    ご返信送れてすみません。

    パーマリンクをデフォルトに直してみました。
    なお、現在「blog」というカスタム投稿にて、8月と7月に1件づつの記事があるようにしています。

    *共通設定のパーマリンクをデフォルトに設定
    デフォルトに設定すると記事は表示されますが、月別のページへ移動しようとすると下記の様になります。
    ・各記事アドレス:http://サイトアドレス/?blog=記事タイトル
    ・8月:記事は表示されずにテンプレートの枠のみ表示されます。
     (8月選択時のアドレス:http://サイトアドレス/?m=201308?post_type=blog )
    ・7月:トップページに飛びます(404でトップページに飛ぶように指定済のため)

    *共通設定はカスタム「/%post_id%」、カスタム投稿のパーマリンクはデフォルト(未入力)「/%postname%」
    この設定にすると、これまでの症状と同様です。
    ・各記事アドレス:http://サイトアドレス/blog/記事タイトル
    ・8月:全件表示
     (選択時のアドレス:http://サイトアドレス/blog/date/2013/08?post_type=blog)
    ・7月:全件表示
     (選択時のアドレス:http://サイトアドレス/blog/date/2013/07?post_type=blog)

    以上のような表示となりました。
    「カスタム分類のアーカイブのパーマリンクを変更する。」のチェックの有無は関係してきますでしょうか。

    モデレーター gatespace

    (@gatespace)

    「カスタム分類のアーカイブのパーマリンクを変更する。」のチェックの有無は関係してきますでしょうか。

    あまり関係ないと思います。

    以下の環境でテストしました。

    ・ローカル環境
    ・WordPress 3.6
    ・アーカイブありのカスタム投稿タイプ
    ・Custom Post Type Permalinks 0.9.3.2
    ・パーマリンク設定 「共通設定」カスタム構造 /%post_id% カスタム投稿タイプ /%postname%
    ・アーカイブリストの表示方法は
     <?php wp_get_archives( array( 'type' => 'monthly', 'post_type' => 'blog' ) ); ?>

    で、カスタム投稿タイプの月別アーカイブは http://example.com/news/date/2013/08となりました。
    同じように作っていても、URLの時点で差が出ていますし、こちらでは月別のカスタム投稿タイプが表示されています。

    お手数ですが、デフォルトテーマ(できればその子テーマ)にした上で、
    ・<?php wp_get_archives( array( ‘type’ => ‘monthly’, ‘post_type’ => ‘blog’ ) ); ?>としておく。
    ・Custom Post Type UI、Custom Post Type Permalinks「以外」のパーマリンクを無効化。
    ・.htaccessをいったん削除して、パーマリンク設定を保存しておく(作り直す)
    ・キャッシュ(ブラウザ、もしかしたらサーバー)を削除した上でアクセスしてみる。

    で確認してみてください

    トピック投稿者 marori

    (@marori)

    ・.htaccessをいったん削除して、パーマリンク設定を保存しておく(作り直す)

    こちらについてですが、一度ルートディレクトリ上にあるhtaccessを削除した上で、改めてパーマリンクを設定し直してhtaccessを自動生成させる、ということでよろしかったでしょうか。

    なお、テーマを変更する前ですが
    ・キャッシュの削除
    ・<?php wp_get_archives( array( ‘type’ => ‘monthly’, ‘post_type’ => ‘blog’ ) ); ?>の設定
    ・Custom Post Type UI、Custom Post Type Permalinks「以外」のパーマリンクを無効化する
    は、効きませんでしたのでテーマを変えて再挑戦します。
    アドレスの表示についてはパーマリンクを同じように設定しなおしましたら同様の表示になりました。

    モデレーター gatespace

    (@gatespace)

    こちらについてですが、一度ルートディレクトリ上にあるhtaccessを削除した上で、改めてパーマリンクを設定し直してhtaccessを自動生成させる、ということでよろしかったでしょうか。

    そです。
    パーマリンク設定(リライトルール)に何か影響が出ているのが原因だと思います。

    ・Custom Post Type UI、Custom Post Type Permalinks「以外」のパーマリンクを無効化する

    すいません、パーマリンクじゃなくてプラグインです。
    (他のプラグインが影響している可能性があるので)

    アドレスの表示についてはパーマリンクを同じように設定しなおしましたら同様の表示になりました。

    同じ、とかじゃなくて、具体的に書いてください。
    先の私が投稿したパーマリンク設定と同じということですか?

    トピック投稿者 marori

    (@marori)

    同じ、とかじゃなくて、具体的に書いてください。
    先の私が投稿したパーマリンク設定と同じということですか?

    失礼しました。
    パーマリンクの設定は
    ・共通設定 カスタム構造: /%post_id%
    ・カスタム投稿タイプ: /%postname%
    です。

    Custom Post Type UI、Custom Post Type Permalinks以外のプラグインですね、了解しました。
    すべてのプラグインを停止させつつ試してみます。

    トピック投稿者 marori

    (@marori)

    ご報告が遅くなり申し訳御座いません。
    以下のことを試しましたので、ご報告します。

    ■現状のテーマのまま作業
    ・Custom Post Type UI、Custom Post Type Permalinks以外のプラグインを停止
    ・htaccessファイルの削除及びパーマリンク保存による自動生成
     パーマリンクの設定は
     共通設定 カスタム構造: /%post_id%
     カスタム投稿タイプ: /%postname%
    ・<?php wp_get_archives( array( ‘type’ => ‘monthly’, ‘post_type’ => ‘blog’ ) ); ?>で表示

    以上で試したところ、月別リンクをクリックしても今までと同様に全て表示されてしまいました。
    この作業の後、下記を行いました。

    ■テーマを変更して作業
    ・テーマを付属の「twentythirteen」に設定
    ・パーマリンクは上記作業時に生成したものをそのまま使用

    以上のようにテーマを変更したところ、問題なく月別表示をすることができました。
    このことからテーマ自体に問題があるということが発覚しましたが、
    つまりはarchive.phpとして各投稿を表示させている記述に問題があると言うことでしょうか。

    モデレーター gatespace

    (@gatespace)

    以上のようにテーマを変更したところ、問題なく月別表示をすることができました。
    このことからテーマ自体に問題があるということが発覚しましたが、
    つまりはarchive.phpとして各投稿を表示させている記述に問題があると言うことでしょうか。

    ソースが提示されていないので分かりませんが、
    少なくともデフォルトテーマで動くのであれば、お使いのテーマに問題があります。

    「Twenty Thirteen」とお使いのテーマのarchive.phpを見比べてみてください。
    (エスパーすると query_posts とかつかってないですか?)

    トピック投稿者 marori

    (@marori)

    お世話になってます。
    archive.phpのソースを見比べましたが、違いすぎて(Twenty Thirteenのソースがスマートすぎて)どの点を直すべきかがよくわかりません。
    不勉強がとても響いております・・・。
    query_postsの記述については、archive.php内はで使用しておりませんでした。
    まずは現状で使用しているarchive.phpのソースを提示します。

    <?php
        $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
        $myQuery = new WP_Query();
        $param = array(
            'paged' => $paged,
            'posts_per_page' => '10',
            'post_type' => 'blog',
            'post_status' => 'publish',
            'orderby' => 'date',
            'order' => 'DESC'
        );
        $myQuery->query($param);
    ?>
    
    <?php if($myQuery->have_posts()): while($myQuery->have_posts()) : $myQuery->the_post(); ?>
        <div class="secInner blogInner">
        	<h3><p><?php the_title(); ?></p></h3>
        	<p class="data"><?php the_time("Y年m月j日") ?></p>
        	<?php echo mb_substr(strip_tags($post-> post_content), 0, 200); ?>
            <a href="<?php the_permalink(); ?>"><br /> >>&nbsp;続きを読む</a >
        </div><!-- //end .infoInner -->
    
    <?php endwhile; endif; ?>
    
    <?php include(TEMPLATEPATH . '/pagenate.php'); ?>

    上記で使用しているpagenate.phpの中身は下記です。内容はページ送りです。
    ページ送りに関しては、以前こちらでお世話になりました。
    カスタム投稿一覧表示の固定ページに付けたページ送りが404エラー

    <div id="pageNate">
    <?php global $wp_rewrite;
    $paginate_base = get_pagenum_link(1);
    if (strpos($paginate_base, '?') || ! $wp_rewrite->using_permalinks()) {
        $paginate_format = '';
        $paginate_base = add_query_arg('paged', '%#%');
    } else {
        $paginate_format = (substr($paginate_base, -1 ,1) == '/' ? '' : '/') .
        user_trailingslashit('page/%#%/', 'paged');;
        $paginate_base .= '%_%';
    }
    echo paginate_links( array(
        'base' => $paginate_base,
        'format' => $paginate_format,
        'total' => $myQuery->max_num_pages,
        'mid_size' => 5,
        'current' => ($paged ? $paged : 1),
    )); ?>
    </div>

    以上となります。
    使用中のarchive.phpより上記pagenate.phpの記述を消してみましたが変わらず月別は全て表示されます。

    また、記事取得にget_postsを使用した記述が下記です。

    <?php
    $postslist = get_posts('numberposts=10&orderby=post_date&order=DESC&post_type=blog');
    foreach ($postslist as $post) : setup_postdata($post);
    ?>
    <div class="secInner blogInner">
        	<h3><p><?php the_title(); ?></p></h3>
        	<p class="data"><?php the_time("Y年m月j日") ?></p>
        	<?php
            echo mb_substr(get_the_excerpt(), 0, 200);
            ?>
            <a href="<?php the_permalink(); ?>"><br /> >>&nbsp;続きを読む</a >
        </div><!-- //end .infoInner -->
    <?php endforeach; ?>

    上記で、記事の取得は上手くいきますが月別には出来ません。
    また、この記述ですと現状で使用しているページ送りは使用出来なくなりますが、これは気にしないことにします。
    archive.phpのデータを取得している記述が問題なのでしょうか。

    モデレーター gatespace

    (@gatespace)

    なんで、記事の取得にget_postsとかnew WP_Queryが必要なのですか?
    そこが今回の原因です。

15件の返信を表示中 - 1 - 15件目 (全16件中)
  • トピック「Custom Post Type Permalinksで月別アーカイブが正常に表示されない」には新たに返信することはできません。