新・元地方の中規模印刷会社で苦悩するWebデザイナー改めWebディレクターの日記

自由な20代、窮屈な30代を経て、遂に40代になっちまったWebディレクター&パソコン講師の覚書と思う言(こと)。略称【ちほちゅう】

*

WordPress(ワードプレス)のヘッドライン表示は「query_posts」じゃなくて「get_posts」 #wp

      2014/11/09

  • このエントリーをはてなブックマークに追加

1年以上前の記事です。内容が古い可能性があります。

プログラムのプロではないのですがときたまプログラムのようなものは書くことがあって、
今回、「つぶくま」にヘッドライン表示を設置した時に気付いたポイントを紹介しておきます。

スポンサーリンク
 

まずは最終的にこのかたちになったというのがこちら。

<div id="headline">【お知らせ】 
<?php
$myposts = get_posts('numberposts=3');
foreach($myposts as $post) :
?>
<a href="<?php the_permalink() ?>"><?php the_title(); ?></a> 
<?php endforeach; ?>

</div>

3~4行目でデータを抽出して6行目で表示。4行目と7行目の間がループとなっています。
実は、3行目の「get_posts('numberposts=3');」のところで実際は一つのカテゴリに絞っているので「get_posts('numberposts=3&category=6');」となっていますがまあ、大方上記の通りです。
(「get_posts」では「numberposts」で記事本数、「category」で記事カテゴリーを指定することができます。)

これのベースとなっているのがプロット・ファクトリーのトップページにあるインフォメーションの部分を改造したこちら。

<div id="headline">【お知らせ】 
<?php
$myposts = query_posts('showposts=3');
foreach($myposts as $post) :
?>
<a href="<?php the_permalink() ?>"><?php the_title(); ?></a> 
<?php endforeach; ?>
</div>

ただ、これだと問題がありまして。。

つぶくまの場合はトップページ以外、全ページにヘッドラインを以下のように表示させようと思っています。
つぶくまのヘッドライン表示
上部、赤線で囲んだ部分がヘッドライン。

一方でプロット・ファクトリーはトップページのみに以下のように表示されるだけ。
プロット・ファクトリーのインフォメーション表示
同じく赤線で囲んだ部分。

実は、プロット・ファクトリーのプログラムを書き換えただけだと、固定ページは問題なく表示されるものの、投稿された各記事やカテゴリー一覧ページに入った時に抽出された記事だけが表示されてしまうのです。
これは、「query_posts」の仕様で、グローバル変数へ影響を与える関数であるから。
一方で
「get_posts」はグローバル変数へ影響を与えることはありません。
get_postsとquery_postsを使い分け:WordPress私的マニュアル

つまりは、新着記事一覧をサイト内任意の場所に表示させたい時は「query_posts」ではなく、「get_posts」を使うようにしたほうが良いということです。

ちなみにquery_postsをつかった場合はwhileを使って書くこんな方法もあります。

<div id="headline">【お知らせ】 
<?php
query_posts('showposts=3');
while ( have_posts() ) : the_post()
?>
<a href="<?php the_permalink() ?>"><?php the_title(); ?></a> 
<?php endwhile ?>
</div>

こちらをget_postsで使うにはちょっと工夫をしなければならないようです。

 - CMS, WordPress, プログラミング, 覚え書き , ,

アドセンス広告メイン

Message

メールアドレスが公開されることはありません。

  関連記事

さくらインターネットはメールアドレスがないと契約できないの?

1年以上前の記事です。内容が古い可能性があります。いやぁ。いまだにこういうクライ …

眠れない原因は足の裏にあった。眠れない人の足の裏の特徴とその解消法

1年以上前の記事です。内容が古い可能性があります。自分、最近は眠れないことは殆ど …

Tumblr(タンブラー)を勉強してみた (11/11追記)

1年以上前の記事です。内容が古い可能性があります。謎多きTumblr(タンブラー …

WordPress+Welcartでショッピングサイト構築【テーマ編】

1年以上前の記事です。内容が古い可能性があります。過去は振り返らない性格なので仕 …

リセマラ(リセットマラソン)とは何のこと?

1年以上前の記事です。内容が古い可能性があります。そういえばちょっと前にマーケテ …

テキストが選択できないPDFファイルからテキストを抽出する方法

1年以上前の記事です。内容が古い可能性があります。時々、PDFファイルを渡されて …

WordPressのテーマ、プラグインの読み込み速度を公開「WP Speedster」

1年以上前の記事です。内容が古い可能性があります。自分がメインで使用しているCM …

Android系スマートフォンを購入してまずするべきこと

1年以上前の記事です。内容が古い可能性があります。そろそろAndroidスマホに …

失業給付金は「基本手当」だけじゃない。「再就職手当」は結構美味しかった

先日、失業給付金をもらうくらいならバイトでもしたほうがよい。みたいな話をしたと思 …

「iOS 4」は何度かのハードリセットでスピードアップする(iPhone)

1年以上前の記事です。内容が古い可能性があります。iPhone3GにiOS4をイ …