You are currently viewing 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つのデータの有り無しの判断なのか、複数データの有り無しの判断のことだと。

コメントを残す