モリパパ moripapa

WordPressから、徒然なるままに…

WordPress記法

はてな記法と云うのが有るよね。実はWordPressを勉強していて、WordPress記法と云うのが有るんだ!

例えば、PFPのIF文は、こうやって書くんだけど

<?php if ( have_posts() ) {
  echo '<p>投稿があります</p>' ;
} else {
  echo '<p>投稿がありません</p> ;
}
?>

これがWordPress記法ではこうなるんですね。

<?php if ( have_posts() ) : ?>
	<p>投稿があります</p>
<?php else : ?>
	<p>投稿がありません</p>
<?php endif; ?>

行にまとまっていて、わかりやすいッちャ解りやすいんですが、これを覚えないとfanctions.phpもheader.php、single.phpsidebar.php、footer.phpも読めないし、書けないんです。

例えば、Loopについても同じで、原則的なphpの書き方だと、Loop回数をカウントする「$i変数」で、Loop回数を制御するんですよね。

$i = 1;
while ($i <= 10):
	echo $i;
	$i++;
endwhile;

ところが、WordPressにはこういった書き方は有りません。Loop回数をカウントする「$i変数」がないというか、WordPressでは表示されないんです。

<?php if ( have_posts() ) : while ( have_posts() ) : the_post() ; ?>
<!-- 記事があるときの表示内容をここに書く -->
<?php endwhile; else : ?>
<!-- 記事がないときの表示内容をここに書く -->
<?php endif; ?>

鉄王さんの記事「WordPressの the_post() ってそもそも何者?」はとても解りやすい記事でした。

$i変数」のかわりthe_post()に、$wp_query という隠れた変数で制御されているんだそうです。この$wp_queryは、WordPressのプログラム側であらかじめ予約されているそうです。
だから、Loopを何回やるか書かなくても予約された回数でLoopが打ち切られるようになっているんだそうです。
予約されているところは、管理パネルの[設定]-[表示設定]-[1ページに表示する最大投稿数]で設定されているとのことです。

やっぱり、WordPress記法を一々覚えないとカスタマイズはできないんだネ。