【小ネタ】WordPressで新しく公開した記事に「New!」を表示する

· 2 min read
【小ネタ】WordPressで新しく公開した記事に「New!」を表示する

サーバ関係の記事ではないですが、WordPress で新しく公開した記事に
新着であることをお知らせする「New!」などのアイコン表示を、期間を指定して表示させる方法になります。
(これが意外とハマりました^^;)


New! の表示させる期間を日数で指定する場合

index.php や single.php のループ内に直接記述をすることも出来ますが、
記述内容がごちゃついてしまうのを防ぐ為に、functions.php にメインの記述を行い、
ループ内の表示したい箇所でその記述を呼び出すようにします。

functions.php に以下を記述します。

// functions.php

function my_new_arrival(){
    $days = 7; // New を表示させる日数
    $today = date_i18n('U');
    $entry = get_the_time('U');
    $diff = date('U',($today - $entry))/86400;
    if( $days > $diff ){
        echo '<span style="font-size: 12pt; color:#ff0000">New!</span>'; // 表示させるテキスト
    }
}

2 行目:$days の数値を変えることで、表示させる日数を変更出来ます。
この設定だと、公開されてから 7 日間 までの記事に New が表示されます。

ループ内

ループ内で表示したい箇所に以下を追加してください。

<?php my_new_arrival(); ?>

自分は content.php 内の、掲載時刻の後ろ側に載せる様にしました。

<article class="post-box" id="post-<?php the_ID(); ?>">
    <a href="<?php the_permalink(); ?>" class="blog-box-img" title="<?php the_title(); ?>">
        <?php
            if ( has_post_thumbnail() ) {
                the_post_thumbnail("post-thumbnail");
            }
        ?>
    </a>
    <a href="<?php the_permalink(); ?>" class="blog-box-title"><?php the_title(); ?></a>

    <a href="<?php echo get_month_link( get_the_time('Y'), get_the_time('m') ); ?>" title="<?php the_time('F j, Y '); ?>" class="blog-box-date">
        <?php the_time('F j, Y '); ?> <?php my_new_arrival(); ?> <!-- 追記 -->
    </a>
    <span class="blog-box-author"><?php the_author_posts_link() ?></span>

    <div class="blog-box-content">
        <?php the_excerpt(); ?>
    </div>

    <a href="<?php the_permalink(); ?>/#comments" class="btn-box-green post-box-comm">
        <?php comments_number( 'Comments (0)', 'Comments (1)', 'Comments (%)' ); ?>
    </a>
    <a href="<?php the_permalink(); ?>" class="btn-box-orange post-box-read" title="<?php the_title(); ?>">
        <?php _e('Read more','caresland-lite'); ?>
    </a>

</article><!-- .post-box -->

この、表示させたい場所を探すのに結構時間がかかり、骨が折れました。。