WP よく使うコードを関数にする

よく使うコードを関数にしておくと保守性が高まりますし、コードもスッキリします。

<?php if ( has_post_thumbnail() ): ?>
    <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('thumbnail'); ?></a>
<?php else: ?>
    <a href="<?php the_permalink(); ?>"><img src="<?php echo get_template_directory_uri(); ?>/assets/img/common/noimage_600x400.png" alt=""></a>
<?php endif; ?>

これをfunctions.phpに関数にします。

/**
 * No Image画像を表示する関数
 */
function display_thumbnail() {
    if ( has_post_thumbnail() ) {
        echo '<a href="'.get_permalink().'">'.get_the_post_thumbnail( 'thumbnail' ).'</a>';
    }else {
        echo '<a href="'.get_permalink().'"><img src="'.get_template_directory_uri().'/images/common/noimage.png" height="180" width="180" alt=""></a>';
    }
}

使う時は関数名を記述

<?php display_thumbnail() ?>

ここで注意するのは、テンプレートでは『<?php the_post_thumbnail('thumbnail'); ?>』となっていたのを関数では『get_the_post_thumbnail( 'thumbnail' )』にしないといけません。

the_permalink(); → get_permalink() the_post_thumbnail('thumbnail') → get_the_post_thumbnail( 'thumbnail' )

Codexだと大抵、the*()は「~を表示する」、get_the*()は「~を取得する」と書いてあります。ループの中の現在地が「the」に対し『get』は引数でIDなどを指定することができます。