WordPressテンプレート関数の『have_●●』と『has_●●』の違い・・・

WordPressの初心者向けの講座をしているとたまに思いのよらない質問を受けることがあります。
先日受けた質問がWordPressのテンプレート関数に出てくる『have』と『has』の違いです。

WordPressの記事を出力する時は必ずループ処理の中で記事を出力させます。
こんな感じです。

[php highlight="2"]
<?php query_posts($query_string); ?>
<?php if(have_posts()): while(have_posts()): the_post(); ?>
<%%KEEPWHITESPACE%%> <?php the_title(); ?>
<%%KEEPWHITESPACE%%> <?php the_content(); ?>
<?php endwhile; endif; ?>
<?php wp_reset_query(); ?>

[/php]

その時に登場するのが、『have_posts』

次にアイキャッチ画像の出力を行う時には、アイキャッチが設定されていたらアイキャッチ画像を出力、設定がされてなければ代わりの画像を出力することになります。
こんな感じです。

[php highlight="1"]
<?php if(has_post_thumbnail()): ?>
<%%KEEPWHITESPACE%%> <?php the_post_thumbnail(); ?>
<?php else: ?>
<%%KEEPWHITESPACE%%> <img src="<?php bloginfo('template_url'); ?>/images/defalut.jpg" alt="No Photo" />
<?php endif; ?>

[/php]

その時に登場するのが、『has_post_thumbnail』

なんで『have』と『has』 の2つあるのか。
これを知ってるとすこ〜しコードを書くときに便利かも?

他の『have』のWordPressテンプレート関数を見てみる。

  • have_comments
  • have_posts

てか、2つしかないんですね^^;

次に、『has』 を見てみます。

  • has_action
  • has_category
  • has_excerpt
  • has_filter
  • has_nav_menu
  • has_post_format
  • has_post_thumbnail
  • has_tag
  • has_term

この様に『have』と『has』とを比べてみると・・・
ポイントは『have』と『has』の後ろについているアンダーバー以降の英語です。
そう、複数系になっているか、単数形になっているかが違いますよね。

英語は全然詳しくないのですが、中学生の時に確か『3単現のS』と習ったのを覚えてます。
なので、 単数になっているものは『has』、複数になってるものは『have』になってるんだろうと思います。

ここで言う単数・複数というのは、1つのデータの有り無しの判断なのか、複数データの有り無しの判断のことだと。

よかったらシェアしてね!
URLをコピーする
URLをコピーしました!

「エンジニアのためのWordPress開発入門」を執筆しました!

WordPressを使った開発案件は依然多く、それに携わるWebエンジニアも多数存在します。ただし、モダンな開発手法に慣れたWebエンジニアがWordPressに初めて触れたとき、その独特のアーキテクチャやシステムの構成に戸惑いを感じることがあるかもしれません。だが、WordPressは、それらを補ったうえにさらに強力なメリットを持ち合わせています。本書は、PHPプログラマがWordPressで開発する際に必要な基礎知識から、現場で役立つ具体的なカスタマイズ手法や開発のポイントについて詳しく解説しています。

この記事を書いた人

NPO法人のHP制作(WordPress)やkintoneを使った業務システムの構築をしています。サイボウズ株式会社公認kintoneエバンジェリスト/CoderDojo西宮と梅田のチャンピオン/認定NPO法人宝塚NPOセンター理事/NPO法人SEIN理事/

コメント

コメントする

目次
閉じる