質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

8875閲覧

今日の日付を取得し、指定期間内であればCSSを適応させる

misonya

総合スコア25

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/10/16 16:43

編集2016/10/16 16:54

現在の日付けを取得し、A〜B日以内ならCSSを適応。それ以外は処理しないというものを作りたいのですがうまく動きません。
このような処理は複雑なのでしょうか?

PHP

1$target_day1 = '2016/11/01'; 2$target_day2 = '2016/12/31'; 3if (get_the_date() > $target_day1) { 4 echo '<link rel="stylesheet" href="http://localhost/wp-content/themes/test/red.css" type="text/css" media="all" />'; 5 }elseif (get_the_date() < $target_day2) { 6 echo '<link rel="stylesheet" href="http://localhost/wp-content/themes/test/red.css" type="text/css" media="all" />'; 7 }else{ 8 //どちらにも該当しない場合、処理しない 9 }

11月1日以降であればCSSを適応する。
そうじゃなければ、12月31日未満であれば適応しない。
それも違えば何もしないと記述したのですが、よくよく考えれば、day1〜day2の内という指定がないので永年ずっと出てしまう現象です。

参考にしたサイトがこちらです。
http://pluswordpress.com/get_the_date/

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2016/10/16 16:44

「うまくできない」とは「何をしたときに」「どうなると思って」「どうなったのか」をお書きください。また、ご自身で書かれたコードを質問文に追記いただいたほうが回答を得られやすいと思います。
guest

回答3

0

get_the_date()

get_the_date テンプレートタグは、現在の投稿(または指定された投稿)が書かれた日付を取得します。the_date() とは異なり、このタグは常に日付を返します。'get_the_date'/en フィルターで出力を変更します。

「今日の日付」ではないですよ。

さらにいえば、

php

1<?php $pfx_date = get_the_date( $format, $post_id ); ?>

パラメータ

$format
(文字列) (オプション) 日付の書式
初期値: date_format オプション の設定値(設定 » 一般 » 日付フォーマット)

日付フォーマットが管理画面から変更されたら、その条件式は破綻します。

php

1<?php 2 3$form = new DateTime('2016-11-01'); 4$to = new DateTime('2016-12-31'); 5 6$today = new DateTime(); 7$today->setTimeZone(new DateTimeZone('Asia/Tokyo')); 8 9 10// DateTime オブジェクトはそのままで比較できる 11if ($form <= $today && $today <= $to) { 12 echo '<link rel="stylesheet" href="' . get_stylesheet_directory_uri() . '/red.css" type="text/css" media="all" />'; 13}

投稿2016/10/16 19:15

編集2016/10/16 19:25
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

misonya

2016/10/16 19:20

そうなんですよね。 比較演算子の結果がどう考えても違うなぁと思ってdumpしたところで気が付きました。 恥ずかしい勘違いです…勉強になります!
guest

0

自己解決

kei344さんのおかげで論理演算子を使うことで出来るということがわかり、自己解決しました。
質問時に演算子間違って書いてしまってました。
下記コードにて正常に動きました!
日付けが一桁だとうまく認識してくれないので、気を付けなければなりませんがテストして改善の余地あるかもです。

PHP

1$target_day1 = '2016/11/01'; 2$target_day2 = '2016/12/31'; 3 4$dt = new DateTime(); //念のため 5$dt->setTimeZone(new DateTimeZone('Asia/Tokyo')); //念のため 6$today = $dt->format('Y/m/d'); 7 8if($target_day1 <= $today && $today <= $target_day2){ 9 echo '<link rel="stylesheet" href="'.get_stylesheet_directory_uri().'/red.css" type="text/css" media="all" />'; 10}

投稿2016/10/16 19:09

編集2016/10/16 19:11
misonya

総合スコア25

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こういう感じでしょうか。

PHP

1if ( $target_day1 > get_the_date() && get_the_date() < $target_day2 ) { 2 echo '<link rel="stylesheet" href="'.get_stylesheet_directory_uri().'red.css" type="text/css" media="all" />'; 3}else{ 4 //どちらにも該当しない場合、処理しない 5}

【get_stylesheet_directory_uri:WordPress私的マニュアル】
http://elearn.jp/wpman/function/get_stylesheet_directory_uri.html

投稿2016/10/16 17:34

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問