プロが教える店舗&オフィスのセキュリティ対策術

ワードプレス初心者です。


<?php
$today = date_i18n('w');
if($today == 1 || $today == 2 || $today == 3 || $today == 4 || $today == 5 || $today == 6) : ?>
日曜日以外表示される
<?php endif; ?>


<?php
if ( date_i18n('H') >= 17 && date_i18n('H') <= 24 || date_i18n('H') >= 0 && date_i18n('H') <= 8) : ?>
午後5~朝の8時の間だけ表示される
<?php endif; ?>


別々ならきちんと動作しますが、
これをドッキングさせた条件の「日曜日以外の17から8時の間表示させる」としたいのですが記述がわかりません。

どなたかおしえてください。

A 回答 (2件)

>「水曜と金曜もはぶきたい」



例示したrangeは連続したデータの取得方法なので、不連続の場合arrayで指示するほうが簡単です

in_array($today,array(1,2,4,6))

>「22時から1時まではぶきたい」

除外する場合 not(!)をandでつなぐとよいかも

!in_array(0,1,22,23)

in_array($today,array(1,2,4,6)) and !in_array(0,1,22,23)
であれば、月、火、木、土の0-1、22-24時以外の時間にヒットします
    • good
    • 1
この回答へのお礼

丁寧にわかりやすく、感謝します。
おかげさまで、やりたいことがやっとできそうです。
本当にありがとうございました!!

お礼日時:2016/05/31 01:28

土曜は17時から始まったものは24時で打ち切って、


月曜の0時から再開して8時までをとるということでOK?
ふつうはandでつなぐだけですね


if(($today == 1 || $today == 2 || $today == 3 || $today == 4 || $today == 5 || $today == 6)
and ( date_i18n('H') >= 17 && date_i18n('H') <= 24 || date_i18n('H') >= 0 && date_i18n('H') <= 8)):

ちょっと整理すると
$today == 1 || $today == 2 || $today == 3 || $today == 4 || $today == 5 || $today == 6
については
in_array($today,range(1,6))

date_i18n('H') >= 17 && date_i18n('H') <= 24 || date_i18n('H') >= 0 && date_i18n('H') <= 8
については
in_array(date_i18n('H'),array_merge(range(0,8),range(17,24)))

とかけるので
if(in_array($today,range(1,6)) and in_array(date_i18n('H'),array_merge(range(0,8),range(17,24)))):
でよいかもしれません

ただし実質24時は存在しないので4→23にしたほうがよいかも
    • good
    • 1
この回答へのお礼

ありがとうございます!
設置して表示されました@すっきり短いコードで勉強になりました。

この場合はもし 「水曜と金曜もはぶきたい」「22時から1時まではぶきたい」と思ったときどうしたらいいのでしょうか。。 良かったらでいいのでおしえてください

お礼日時:2016/05/30 19:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!