• 解決済 koneco

    (@koneco)


    フォーラムに投稿をしてもタイトルが出ないためうまく見ることができません。
    何度も投稿してしまいすみません。
    初めまして、お世話になります。

    ウェブ上の記事や本を参考にワードプレスでウェブサイトをつくりました。

    今まで問題なく運用できていたのですが、
    ワードプレスを最新版に更新したところ問題が出ました。具体的には

    Custom Post Type Permalinksを使い、カスタム投稿タイプの月別アーカイブを表示。
    しかし、リンク先の投稿の表示が、意図するものが表示されないという問題です。

    サイドバーの月別のアーカイブで2014年5月(6)等の表示は問題なく出ていますが、
    クリックすると出てくる記事が最新の記事になってしまいます。
    リンク先はexample.com/news/date/2014/05とページが移動しているのはわかるのですが、
    どの月をクリックしても記事が最新の記事になってしまいます。

    http://ja.forums.wordpress.org/topic/24515?replies=17

    上記URLの記事と同じような状況だと思うのですが、記事を読んでも解決策がわかりません。

    ちなみに
    サイドバーを表示しているページは
    example.com/newsで月別のアーカイブをクリックしたページはexample.com/news/date/2014/05などです。
    双方ともにarchive-news.phpが適用されているとおもいます。

    archive-news.phpの関係個所は

    <?php $temp = $wp_query; $wp_query = null; $wp_query = new WP_Query(); $wp_query->query('post_type=news' . '&paged=' . $paged . '&posts_per_page=3'); ?>
    	<?php while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
    		<h3><?php the_time('Y m.d'); ?> <?php the_title(); ?></h3>
    		<div class="tpiCon"><?php the_content(); ?></div>
    	<?php endwhile; ?>
    <?php $wp_query = null; $wp_query = $temp; ?>

    です。

    最近3.9.1に更新する前はうまくいっていたと思います。
    ワードプレスの更新をしてからパーマリンクの更新もやりました。

    どなたか解決方法がわかる方、お時間のある時にでも教えていただけると幸いです。
    よろしくお願いいたします。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • WordPressは、3.9.1に更新する前はどのバージョンをお使いでしたか?
    また、プラグイン Custom Post Type Permalinks のどのバージョンをお使いですか?

    トピック投稿者 koneco

    (@koneco)

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

    更新する前は
    wordpress 3.5.1
    Custom Post Type Permalinks 0.8.7.5

    現在は
    wordpress 3.9.1
    Custom Post Type Permalinks 0.9.5.4

    です。

    Custom Post Type Permalinks以外のプラグインを停止してみましたが、改善しませんでした。

    すごく簡単な事でつまずいているような気がします。
    よろしくお願いいたします。

    konecoさん、バージョンの組み合せに問題は無さそうですので最初に戻って

    http://ja.forums.wordpress.org/topic/24515?replies=17
    上記URLの記事と同じような状況だと思うのですが、記事を読んでも解決策がわかりません。

    ポイントとして挙げられていることを確認した結果は問題なかったのですよね?
    どれについてどのような確認結果だったかを示して頂けると、すぐに解決策とまでは行かなくても、原因が見えてくるのではないかと思います。

    例えば次のような確認ポイントが挙げられています。

    1. カスタム投稿タイプの設定でhas_archivetrueにしてあるか?
    2. デフォルトのパーマリンクに戻して試してみると?
    3. .htaccessをいったん削除して、パーマリンク設定を保存しておく(作り直す)。これは、一度ルートディレクトリ上にある.htaccessを削除した上で、改めてパーマリンクを設定し直して.htaccessを自動生成させるということ。念のため予めバックアップをとってから。
    4. テーマをWordPress標準の例えばTwenty Fourteenに変えてみる。
    トピック投稿者 koneco

    (@koneco)

    ghvstさん、出張で海外にいたため返事が遅くなってしまいました。
    すみません。

    ご質問の内容ですが、
    1:has_archive: true / with_front: true になっています。

    2:ディフォルトではexample.com/news自体が表示されません。トップページ(home.php)のみ表示されます。

    3:一度消して自動生成してみましたが、結果は同じでした。
    .htaccessにいろいろと付け加えているので、自動生成後はhome.phpが表示されなくなりました。その他のexample.com/newsなどは今まで通りの挙動をしました。

    4:Twenty Fourteenにしたところ投稿がないため(すべて固定ページとカスタムフィールド?カスタムタクソノミー?による投稿のため。)

    見つかりません。最初の投稿をする準備ができましたか ? ここからスタートしてください。

    と表示されます。
    (だいぶ前に作ったオリジナルのテーマなのでいまいちカスタムタクソノミーなどについて覚えていません。すみません)

    以上がご質問の内容について試してみた結果です。
    こんな感じで解決のヒントになるようなことがわかるとよいのですが、
    何分知識がないのですみません。

    よろしくお願いいたします。

    konecoさんが最初に示して下さった過去の記事
    http://ja.forums.wordpress.org/topic/24515?replies=17#post-66184
    の一番最後の部分で、下記のようなやりとりがあります。

    コメントしている方(gatespaceさん):

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

    質問を始めた方(maroriさん):

    ご指摘頂いた点について考え直し、記事の取得にget_postsnew WP_Queryもいらないということにようやく気づき、archive内の記述を修正しました。
    get_postsを取り除き、投稿があった場合に出力するように<?php if(have_posts()): while(have_posts()): the_post(); ?>でループをかけて出力させたところ、月別表示及び全件表示も問題なく行うことが出来ました。

    カスタム投稿のhas_archivetrueに設定してarchive.phpを作っていたというのに、わざわざget_postsやらで記事を取得させる記述をしていた為に出力がおかしなことになり、正常に月別の記事を取得できなかった、ということなのでしょうか。

    トピック投稿者 koneco

    (@koneco)

    ghvstさん

    いつも素早いお返事ありがとうございます。

    表示上手くいきました!!

    maroriさんの該当コードがかなり自分のものとかなり違うのため、理由は違うところにあるのでは?と勝手に思い込んでいました。

    <?php $temp = $wp_query; $wp_query = null; $wp_query = new WP_Query(); $wp_query->query('post_type=news' . '&paged=' . $paged . '&posts_per_page=3'); ?>

    のあたりをどの様にif whiteに変更していいのかわからなかったのですが、

    該当のコーディングを

    <?php if(have_posts()): while(have_posts()): the_post(); ?>
    	<h3><?php the_time('Y m.d'); ?> <?php the_title(); ?></h3>
    	<div class="tpiCon"><?php the_content(); ?></div>
    <?php endwhile; endif; ?>

    と変えたところ、問題なく表示できました。ページ送り等も何も問題なく正常に動いています。

    よくよく考えたらpost_type=new用のアーカイブなのでわざわざpost_type=news等のコードを打たなくてもいいということなんですね。

    maroriさんと全く同じ解決策で、同じ感想を最後に出すような質問をしてしまい申し訳ありませんでした。結局、解決するまでmaroriさんとgatespaceさんの言ってる意味が分かってなかったようです。

    ghvstさん本当にありがとうございました。
    PHPをよくわからずにワードプレスをいじっている初心者に優しくご教授いただき、
    心から感謝をしております。

6件の返信を表示中 - 1 - 6件目 (全6件中)

トピック「月別アーカイブのリンク先の記事が最新の記事になる。」には新たに返信することはできません。