トップページの新着記事だけ更新されないが、タイプミスをしたと思った
-
すべてのページに5件新しい記事を表示する処理を書いています。
投稿ページや固定ページだと問題ないのですが、固定ページをトップページにしたページのみ、新着記事がformタグを作って、submitボタンを使ってリロードさせてやらないと表示されません。
<?php query_posts(‘showposts=5’); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>新着記事の内容
<?php endwhile; ?>
<?php endif; ?>とか、
<?php query_posts(array( ‘posts_per_page’ => 5, ‘offset’ => 0 )); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>新着記事の内容
<?php endwhile; ?>
<?php endif; ?>
だとダメで、
たまたまタイプミスしたいかのコードだと表示されます。
<?php query_posts(array( ‘posts_per_page’ => 5, ‘offset’ => 0’ )); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>新着記事の内容
<?php endwhile; ?>
<?php endif; ?>ミスしたところは、query_postsの一番右のシングルクォーテーションを書いてしまったところです。
さっぱりわかりません。どなたかご教示願います。
-
twentytwelve(親テーマ)に小テーマのテンプレートを持ってくると大丈夫なんですが、子テーマだとすべてのプラグインをなくしても動作しないようです。
結局、キャッシュでもスタイルシートでもありませんでした。
5件表示する前に1件ダミーのループを作ってみたら、うまくいきました。
ソースは以下のとおりです。<?php query_posts('&posts_per_page=1'); ?> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <?php endwhile; else: ?> <?php endif; ?> <?php $args = array( 'posts_per_page' => 5 ); ?> <ul> <?php $my_query = new WP_Query($args); ?> <?php if ($my_query->have_posts()) : ?> <?php while ($my_query->have_posts()) : $my_query->the_post(); ?> <li> <span class="date"> <?php the_time('Y年n月j日'); ?> <?php $days=30; $today=date('U'); $entry=get_the_time('U'); $diff1=date('U',($today - $entry))/86400; if ($days > $diff1) { echo '<img src="images/new.png" alt="New" />'; } ?> </span> <a href="<?php the_permalink(); ?>"><?php the_title();?></a> </li> <?php endwhile; ?> <?php endif; ?> <?php wp_reset_postdata(); ?> </ul>小テーマで固定ページでトップページで最新記事を表示したい方、注意してください。
これはwordpressのバグだと思います、僕は。。。。小テーマで固定ページでトップページで最新記事を表示したい方、注意してください。
これはwordpressのバグだと思います、僕は。。。。バグではないと思いますよ。
(使っているテーマやフロントページを固定ページにしている、などの情報ははじめから提示してもらった方が回答がつきやすいですよ)WordPressのテンプレートファイルには優先順位があります。
そして同じ名前のファイルがある場合は子テーマ→親テーマの優先順位になります。
フロントページを「固定ページ」にしている場合に優先順位が高いのは fornt-page.php です。
子テーマにfornt-page.phpはありますか?こちらで
- 「Twenty Twelve」の子テーマを作成
- フロントページは固定ページを表示
- 親テーマの page.php を複製し、子テーマに front-page.php として保存
としたうえで、front-page.php を下記のような内容にしましたが、きちんとフロントーページに設定した内容と、投稿の新着5件が(見た目は別として)表示されました。
<?php get_header(); ?> <div id="primary" class="site-content"> <div id="content" role="main"> <?php while ( have_posts() ) : the_post(); ?> <?php get_template_part( 'content', 'page' ); ?> <?php comments_template( '', true ); ?> <?php endwhile; // end of the loop. ?> <?php // 投稿の最新5件を表示 $args = array( 'posts_per_page' => 5 ); $my_posts = get_posts( $args ); // $posts = とは書かない foreach ( $my_posts as $post ) : setup_postdata( $post ); ?> <p><?php the_title(); ?> <?php the_permalink(); ?></p> <?php endforeach; wp_reset_postdata(); ?> </div><!-- #content --> </div><!-- #primary --> <?php get_sidebar(); ?> <?php get_footer(); ?>バグではないですよ。固定ページをトップに置いて、そこに最新を表示するというのは、企業ページで山ほど書いてきており、特に問題になったり表示が出来なかったりしたことはないです(過去のバージョンから最新バージョンまで)。
おそらくはたまたまなにかの条件が重なったか、どこかに小さな見落としがあって上手くいかなかった…ということだと思います。ダミーループで解決したということは、根本的に直った訳ではない、と考えて下さい。原因をきちんと追求しておくと、きっと勉強になると思います。
最初は表示されるかもしれませんが、データを2回、3回と足していくうちに動かなくなると思うんですが。。。確かめましたか?
僕はもう動かなくなるのが怖いので変えるつもりはありませんが。僕の書き方が悪かったんですが、1回めは表示されるんです。
次にデータを1つたします。
リンクをクリックします。
次のデータが表示されます。
次にまた同じ事をします。
データを足します。
リンクをクリックします。
データが変わりません。
submitボタンを押します。
次のデータが表示されます。次のデータが表示されなくなるまで、1から3回くらいで症状が現れます。
gatespace世話役さん、試しましたか?
少なくとも、仰っているようなケースはテストケースで山ほどやっているわけで、もし仰っているような問題が発生するようであれば、もっとずっと以前に問題として定義されていると思います。というのも、ちょうど今納品中のサイトが非常に似通った構造になっているというのもあります。テストロジックを組んで100回以上回しても、仰るような症状は出ませんでした。また、過去に納品したサイトでも再調査しましたが、やはり問題は出ていません。
バグかもしれないと言ってしまうのは簡単ですが、仰るようなケースはよくあるケースであり、決してレアなケースではありません。プロ(少なくとも私は数年程度キャリアではありません)に対して「試しましたか?」と嫌疑をかける前に、完璧なコード運びをし、かつどんな条件でも必ず再現するような状況を、確実に伝えられる手段で伝達するべきだと思います。その結果として、もしかしたら特定の条件下において症状が出るかもしれません。ただ現時点でここに書かれた情報を基にした場合は、症状は確認出来ないので、結果的にバグではないという結論に達する訳です。
こんにちは。まずは落ち着きましょう。フォーラムの回答者のすべてが同じ問題に当たったことがあるわけではありません。善意で、ユーザー間で情報を共有し解決しようとしています。
スレッドを読み返しましたが、現象から推測するかぎりでは、キャッシュ系のプラグインが原因でまず間違いないと思います。WordPressのバグではありません。更新したのにトップページが変わっていないと言うのが特徴的です。キャッシュ系のプラグインは、PHPの出力結果を一時的に保存し、次のアクセス時に保存しておいた過去の出力結果を表示することで、表示を高速化する仕組みになっています。
インストールされていたキャッシュ系のプラグインを全て教えていただけますか?キャッシュ系のプラグインの中には、管理画面から無効化したり、サーバー上からフォルダごと削除するだけではアンインストールが完了しないものがあります。私もそれで更新が反映されなくなって困った経験があります。
また、キャッシュ系のプラグインを複数インストールしても、早くなりませんし、干渉して問題を起こすことも多いので、どれかひとつを入れるようにした方がいいですね。
hissy thx.
—hissyさんが書かれたとおり「みんなが同じ問題に遭遇していない」というのはご理解ください。
以下、老婆心になるのですが、質問者も回答者も同じWordPressを使っているとは言え、WordPressのバージョンや使っているサーバー、プラグインやテーマなどなど、それぞれが異なる環境だと思ってください。
全く同じ環境では無い以上、Aさんの場合は問題が起きるけど、Bさんでは起きない、という事もあり得ます。回答者はできる限り質問者の方と同じ状況が再現できるように注力するのですが、これは質問者の方がどれだけ情報を提供してくれるかによります。
そのための「質問ルール」だったり、「問題解決のためのチェックリスト」だったりします。
オンライン上でお互いの顔が見えない中、なるべく意思の疎通を図ろうとするためのルールですので、お時間のある時にでも一度読んでいただければなと思います。
—
ちなみにですが、私は回答にコードを書き込む場合は、できうる限り最低限の環境(デフォルトテーマ、かつプラグインはWP Multibyte Patchのみ)でエラーが起きないようにしています。
(先にも書いたとおり、質問者の環境によってことなるので)信用していただけないのは大変残念なことなのですが、「試しましたか?確認しましたか?」と聞かれても「確認してるし、テストもしましたよ」としか回答できませんので、ご了承ください。
すいません、寝てなくてかーっとしていました。。。
でも、プラグインを全部無効にしてtwentytwelveにテンプレートを入れたときは動いて、
小テーマにした途端動かなくなりました。
functions.phpも何もいじってない状態です、それでもうごきませんでした。
キャッシュのプラグインが悪さをするということはわかりました。
バグでないということもわかりました。
でも、現状の状態で問題なく動いているので、これでよしとしたいと思います。
皆さんに不快な思いをさせてしまったことは遺憾に思います。
すみませんでした。わたしが更新しているサイトでトラブルが発生した場合は、同じ階層に新しいデータベースと、新しいWordPressのサイトを作って再現するか試します。
同じ最新のバージョンのWordPressだとしても、最初から最新バージョンと、何回アップデートを繰り返したかでは同じではないでしょう。デフォルトのテーマとプラグインの状態でしたら、極めて近い形で共有体験ができます。
それぞれ考え方はあるでしょうけれども、わたしは世話しているサイトでトラブルが合った場合に解決の糸口として引き出しを増やしたいと思って同じトラブルからの復帰をさせてみたいのです。
ただただわかっていて指導したり伝えているだけではありません。小テーマで固定ページでトップページで最新記事を表示したい方、注意してください。
これはwordpressのバグだと思います、僕は。。。。1つ2つのサイトで起こった事象をバグと断定されるわけはないでしょうから、基本的情報も含めて検証された経緯を伝えてもらえれば嬉しいです。
あ〜、思い出しました。W3 Total Cacheです。インストールされていませんでしたか?このプラグインは、いくつかサーバーにファイルを作成し、wp-config.php もちょいと追加するので、単に無効化すると辺にキャッシュが効きっぱなしになって、更新しても反映され無くなったりするんですよね。とても良くできたプラグインなんですけども。もしW3TCを入れてらっしゃったら、色々ブログ記事を書いてる方もおられるみたいなので、参考にしてみてください。
http://e-felix.co.jp/seisaku/blog/natu/2011/12/15/w3-total-cache-%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E5%89%8A%E9%99%A4%E6%99%82%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC/
http://journalxtra.com/websiteadvice/wordpress/uninstall-w3-total-cache-proper-3920/
http://maiko.openmedialabo.net/wp/2012/06/w3totalcache/
http://www.shoutmeloud.com/how-to-delete-uninstall-w3-total-cache-wordpress-plugin.htmlW3 Total Cache、これは私もハマりました。ていうか、入れただけでサイトが真っ白になってしまいました。すぐに外しました。
>検証された経緯
0.プラグインの無効化
1.最初のデータを入力(投稿)
2.次のデータを入力(投稿)
3.トップページのリンクをクリック
4.新しく入力したデータが表示されるかチェック
5.2~4の繰り返し
(一度、リセットしたいと思ったら、submitボタンを押して最新の投稿を表示)
この作業を延々と繰り返しました。確かに、私のサイトだけでバグだと断定するのは早計ですかね。
でも、このソースで確かめても、同じエラーが出ました。<?php get_header(); ?> <div id="primary" class="site-content"> <div id="content" role="main"> <?php while ( have_posts() ) : the_post(); ?> <?php get_template_part( 'content', 'page' ); ?> <?php comments_template( '', true ); ?> <?php endwhile; // end of the loop. ?> <?php // 投稿の最新5件を表示 $args = array( 'posts_per_page' => 5 ); $my_posts = get_posts( $args ); // $posts = とは書かない foreach ( $my_posts as $post ) : setup_postdata( $post ); ?> <p><?php the_title(); ?> <?php the_permalink(); ?></p> <?php endforeach; wp_reset_postdata(); ?> </div><!-- #content --> </div><!-- #primary --> <?php get_sidebar(); ?> <?php get_footer(); ?>それで結局、私のサイトでは私の作ったコードで解決させました。
トピック「トップページの新着記事だけ更新されないが、タイプミスをしたと思った」には新たに返信することはできません。