WordPressでバナーを公開日時またはリンク先が公開されている場合のみ表示したい

更新日:

WordPressで「指定した公開日時になったらバナーを表示したい」「バナーのリンク先ページが公開されている場合のみバナーを表示したい」けど、WordPressの標準機能やテーマの機能ではできない…と思ったことはありませんか?

今回はそんな時に使用できるショートコードをご紹介します。

公開日時またはページが公開されている場合に内容を表示するショートコード

下記コードをfunctions.phpに追記します。

/**
 * 条件に応じてコンテンツを表示するショートコード
 */
add_shortcode( 'display_content_when_conditions', function( $atts, $content = null ) {
    // 公開日時とページのIDがどちらも指定されていない場合
    if ( ! empty( $atts['target_date'] ) && ! empty( $atts['published_post_id'] ) ) {
        return '';
    }

    // 公開日時が指定されている場合
    if ( ! empty( $atts['target_date'] ) ) {
        // タイムゾーン
        $timezone = new DateTimeZone( 'Asia/Tokyo' );

        // 現在日時
        $current_date = new DateTimeImmutable( wp_date( 'Y-m-d H:i' ), $timezone );

        // 公開日時
        $target_date = new DateTimeImmutable( $atts['target_date'], $timezone );

        // 現在日時が公開日時になった場合
        if ( $current_date >= $target_date ) {
            return do_shortcode( shortcode_unautop( $content ) );
        } else {
            return '';
        }
    }

    // 指定したIDのページが公開されている場合
    if ( ! empty( $atts['published_post_id'] ) && get_post_status( $atts['published_post_id'] ) === 'publish' ) {
        return do_shortcode( shortcode_unautop( $content ) );
    } else {
        return '';
    }
} );

使い方

例)指定した公開日時(2030年1月1日の0時0分)になったらbanner.jpgを表示する場合

target_dateに「Y-m-d H:i」の形式で指定します。2029年12月30日の23時59分まで非表示で、2030年1月1日の0時0分から表示されます。

カスタムHTMLブロックの場合

[display_content_when_conditions target_date="2030-01-01 00:00"]
<img src="banner.jpg" alt="">
[/display_content_when_conditions]

テーマのテンプレートに直接書く場合

<?php
$content = '<img src="banner.jpg" alt="">';
echo do_shortcode('[display_content_when_conditions target_date="2030-01-01 00:00"]' . $content . '[/display_content_when_conditions]');
?>

例)指定したID(123)のページが公開されていればbanner.jpgを表示する場合

published_post_idにバナーのリンク先ページのIDを指定します。IDは編集画面のURLに付与されている「?post=」の数字です。123というIDのページが公開されていなければ非表示、公開されていれば表示されます。※123は例です。

カスタムHTMLブロックの場合

[display_content_when_conditions published_post_id="123"]
<img src="banner.jpg" alt="">
[/display_content_when_conditions]

テーマのテンプレートに直接書く場合

<?php
$content = '<img src="banner.jpg" alt="">';
echo do_shortcode( '[display_content_when_conditions published_post_id="123"]' . $content . '[/display_content_when_conditions]' );
?>

作成されていない、または公開以外のステータスの場合は公開されていないとみなされます。

tooolsのTech Blogではこれからも役に立つ情報を発信していきますので、定期的に閲覧していただけると幸いです。

参考:add_shortcode() – Function | Developer.WordPress.org
参考:wp_date() – Function | Developer.WordPress.org
参考:do_shortcode() – Function | Developer.WordPress.org
参考:shortcode_unautop() – Function | Developer.WordPress.org
参考:get_post_status() – Function | Developer.WordPress.org
参考:PHP: DateTimeZone::__construct – Manual
参考:PHP: DateTimeImmutable::__construct – Manual

学校授業の「IT化」で、こんなお悩みありませんか?【e-おうち】
出張/持込/宅配でパソコン修理・設定 24時間365日対応
消費税計算

税率を設定して税込/税抜金額の消費税計算ができます。

文字数カウント

文字数をカウントできます。

和暦西暦変換

和暦と西暦を相互変換できます。

年齢計算

和暦または西暦から年齢を計算できます。

入学年・卒業年計算

履歴書に必要な学校の入学年・卒業年を生年月日から計算できます。

単位変換(換算)

キロ、マイル、グラム、華氏などの様々な単位を相互変換(換算)できます。

カラーコード変換

カラーコード(16進数)とRGB値(10進数)を相互変換できます。

Webタイマー(カウントダウン)

Webタイマー(カウントダウン)です。ストップウォッチ機能もあります。

生活に便利な電話番号一覧

警察や消防などの緊急連絡先や電話番号案内などの電話番号を確認できます。

プロバイダーのカスタマーサポートの電話番号一覧

主なプロバイダーのカスタマーサポートの電話番号を確認できます。

タスク管理(ToDo)

自分のWebブラウザーだけでタスク管理(ToDo)ができます。

エクセル関数

エクセル関数を検索できます。

麻雀の点数計算

麻雀の和了時の点数(符数/翻数/役)を計算することができます。

便利なショートカット一覧

Windows 10やExcelなどで使用できる便利なショートカットを確認できます。

電気料金計算

消費電力、使用時間、使用日数、1kWh単価から電気料金を計算できます。

パスワード生成(作成)

大文字・小文字・数字・記号を含むランダムなパスワードを生成できます。

自分のグローバルIPアドレスを確認

自分がインターネットに接続する時のグローバルIPアドレスを確認できます。

学校授業の「IT化」で、こんなお悩みありませんか?【e-おうち】
出張/持込/宅配でパソコン修理・設定 24時間365日対応
出張/持込/宅配でパソコン修理・設定 24時間365日対応
きょうみくん
このサイトの管理者
名前 きょうみくん
身長 181.1cm
誕生日 1月21日
所属 日本PCサービス株式会社
コメント

パソコン、インターネット、サーモン、ミルクティーが好きです。
猫ではありません。

エクセル家計簿の作り方など、技術的なコラムを書いているTech Blogも運営しています。