WordPressでPHPで条件分岐

このQ&Aのポイント
  • WordPressを運用していて、記事内でPHP if文を使って条件分岐をしたいです。
  • WordPressにて提供されている記事の投稿日を参照して、記事投稿○日以前、以降で表示を切り替えたいです。
  • PHP内にWordPressの関数が使えないのかな。とも思っていますが、PHP初心者の為調べ方も解らない状況です。
回答を見る
  • ベストアンサー

WordPressでPHPで条件分岐

WordPressを運用していて、記事内でPHP if文を使って条件分岐をしたいです。 WordPressにて提供されている記事の投稿日を参照して、記事投稿○日以前、以降で表示を切り替えたいです。 あまり詳しくないのですが、取り敢えず下記のようにしてみましたが、動きません。。 if( the_time('Ymd') <= date('Ymd', strtotime("-3 days")) ){    print "前の表示"; }else{    print "先の表示"; } PHP内にWordPressの関数が使えないのかな。とも思っていますが、PHP初心者の為調べ方も解らない状況です。 どなたかお分かりになる方、宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

うーん、書き方は間違えてるわけではないとおもうんだけどな。 とりあーえず、その2つが結果どうなってんのかを調べるのが良かろう。 var_dump(the_time('Ymd')); var_dump(date('Ymd', strtotime("-3 days"))); if( the_time('Ymd') <= date('Ymd', strtotime("-3 days")) ){    print "前の表示"; }else{    print "先の表示"; } とすると、the_timeとdateの結果どうなっているのかが分かるぞ。これが両方ともstringであれば問題ないが・・・・。 まぁさすがにWordPressの管理画面の記事投稿ページの本文にそう書いているなんて事はないと思うけど、こういう質問をする時に一番重要な事は、「取り敢えず下記のようにしてみましたが、IEでアクセスして表示してみたところ○○というような状況になります。」などと、具体的な結果を明記する事だな。

takeaway2000
質問者

お礼

有難うございました。 遅くなってすいません。頂いた内容を元に、他サイト等でも調べて、下記のような感じで解決しました。 <?php $days = 3; //Newを表示させたい期間の日数 $today = date_i18n('U'); $entry = get_the_time('U'); $kiji = date('U',($today - $entry)) / 86400 ; if( $days > $kiji ){ ?> ※前の記事 <?php }else{ ?> ※後の記事 <?php } ?>

関連するQ&A

  • Wordpressの条件分岐について

    Wordpressの条件分岐について質問です。 カテゴリー毎に表示される記事のデザインを変更したいのですが、 複数のカテゴリーに登録した際に思い通りに表示できません。 「cate01(ID:1)」と「cate02(ID:2)」の2つのカテゴリーがあり、 表示する記事ページ(single.php)のデザインを分けています。 「cate01(ID:1)」は「single01」、「cate02(ID:2)」は「single02」という具合です。 そこで、「cate01(ID:1)」と「cate02(ID:2)」の両方に該当する記事の場合、 「cate02(ID:2)」からリンクされた記事を表示すると「cate01(ID:1)」のテンプレートが割り当てられてしまいます。 現状「single.php」で以下のように条件分岐させているのですが、 先に「cate01(ID:1)」の記述があるので、優先されるのではないかと思います。 <?php if ( in_category('1') ) { include(TEMPLATEPATH . '/single01.php'); } else if ( in_category('2') ) { include(TEMPLATEPATH . '/single02.php'); } else { include(TEMPLATEPATH . '/index.php'); } ?> 「cate02(ID:2)」から「single02」を表示するにはどうすればよいでしょうか? 当方PHP初心者ですので、あまり詳しいことはわかりません。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPの条件分岐について

    URLに含まれる文字列で分岐したいです。 WordPressですと、 <?php if( is_single( 'sample' , 'test' , 'yamada' , 'tanaka' , ・・・ ) ) : ?> とスラッグやIDなどでできたのですが、WordPressではない場合はどうしたら良いのでしょうか? 上記のように複数ある場合の書き方がよく分かりません。 詳しい方教えてください、おねがいいたします。

    • ベストアンサー
    • PHP
  • WordPress 条件分岐間違っている箇所は?

    WordPressで最新記事を判別して大きく見せるなど、表示を変更する条件分岐のカスタマイズ方法を下記のURLを参考に改造しました。 https://whitebear-seo.com/wordpress-newpost-conditional-branch/ 結果はエラーが出ました。 どこが間違っているか教えていただけないでしょうか? 宜しくお願いします。 <?php if ( have_posts() ) : if ( is_home() && ! is_front_page() ) : ?> <?php endif; /* 改造前 */ while ( have_posts() ) : the_post(); /* 改造前 */ get_template_part( 'template-parts/content', get_post_format() ); /* ページネーション */ endwhile; echo '<div class="text-center paging-navs">'; the_posts_pagination(); echo '</div>'; else : get_template_part( 'template-parts/content', 'none' ); /* ページネーション END */ endif; ?> /* 改造後 */の部分だけ改造しました。 ↓ <?php if ( have_posts() ) : if ( is_home() && ! is_front_page() ) : ?> <?php endif; /* 改造後 */ while ( have_posts() ) : the_post(); $counter++; if ($counter <= 1): ? get_template_part( 'template-parts/content2', get_post_format() ); else: /* 改造後 */ get_template_part( 'template-parts/content', get_post_format() ); /* ページネーション */ endwhile; echo '<div class="text-center paging-navs">'; the_posts_pagination(); echo '</div>'; else : get_template_part( 'template-parts/content', 'none' ); /* ページネーション END */ endif; ?>

    • 締切済み
    • PHP
  • Wordpressの条件分岐タグの件で

    現在、Wordpressでサイトを構築中の者です。 条件分岐のタグの件で、 if文で使用したいのですが、 wp-login.php のページはどのタグを使用すればいいのでしょうか?? is_admin() ではないようで、 「注': wp-login.php ページは管理パネル内のページではない。このページが表示されているかを確認するには、管理グローバル変数 の $pagenow を使う。」とWordpressの解説サイトには載ってあるのですが。 よろしくお願いします。

  • WordPress 条件分岐がうまくいかない

    それぞれの投稿ページのデザインとレイアウトを別々にしたいため、条件分岐によってデザインを変えるようにしたいです。 single.phpをコピペし、以下のように作成。 single-magazine.php(マガジン用) single-photogallery.php(フォトギャラリー用) single-information.php(お知らせ用) single.phpの中身を以下に記述。 <?php if ( in_category('magazine') ) { //マガジン get_template_part( 'single-magazine' , false ); } elseif ( in_category('photogallery') ) { //フォトギャラリー get_template_part( 'single-photogallery' , false ); } elseif ( in_category('information') ) { //お知らせ  get_template_part( 'single-information' , false ); }else { //それ以外の場合 get_template_part( 'single-normal' , 'normal'); } ?> 結果はマガジンとフォトギャラリーは表示できましたが、お知らせだけ表示せず真っ白のままです。 HTMLソースも空っぽでした。 上記のコードに間違いがありましたら教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • php storetotime 最終日の前日

    たとえば、2か月前の最終日を求めるには date('Ymd', strtotime( 'last day of -2 month' )) で求められますが、その前日を求めるにはどうすれば良いでしょうか? date('Ymd', strtotime( 'last -2 day of -2 month' ))

    • ベストアンサー
    • PHP
  • 条件分岐が多いIF分の書き方について。

    テキスト入出力でのIF分についてご質問がございます。 例えば条件が多いときに、結果が得られない時があるのですが 書き方で何か問題があるのならご指摘ください。 下記のコードでご説明します。 //コード1の文字列が04でコード2の文字列が01の場合00001を表示 if (コード1.compareTo ("04") == 0 && コード2 .compareTo ("01") == 0 ) { out.print ("00001"); //コード1の文字列が04でコード3の文字列が2の場合00005を表示 } else if (コード1.compareTo ("04") == 0 && コード3 .compareTo ("02") == 0 ) { out.print ("00005"); //コード1の文字列が08でコード3の文字列が07の場合10000を表示 } else if (コード1.compareTo ("08") == 0 && コード3 .compareTo ("07") == 0 ) { out.print ("10000"); //コード1の文字列が10でコード5の文字列が07の場合30000を表示 } else if (コード1.compareTo ("10") == 0 && コード5 .compareTo ("07") == 0 ) { out.print ("30000"); //それ以外エラー } else { out.print("エラー");} } 値がIF分の条件とマッチしていても if (コード1.compareTo ("04") == 0 && コード2 .compareTo ("01") == 0 ) { out.print ("00001"); //コード1の文字列が04でコード3の文字列が2の場合00005を表示 } else if (コード1.compareTo ("04") == 0 && コード3 .compareTo ("02") == 0 ) { out.print ("00005"); //コード1の文字列が08でコード3の文字列が07の場合10000を表示 } else if (コード1.compareTo ("08") == 0 && コード3 .compareTo ("07") == 0 ) { out.print ("10000"); このコードまでに当てはまらない条件はすべて ("10000"); の結果になり つまりそれ以降のelse if の条件に 当てはまらなくなります。 else if をいくらでも増やして条件分岐出来ると学習して 検証しているのですが・・・ 最終的にがIF~else if ~elseで 30パターンぐらい条件分岐したいと思ってます。 初歩的なご質問で恐縮ですが アドバイス よろしくお願いします。

    • ベストアンサー
    • Java
  • PHPのload時にいきなり条件分岐

    php初心者です。 この度、前任者のPHPプログラムを修正することになりました。 htmlの中にPHPが組み込まれているのですが、 「test.php」 <html><head></head><body> <?php if(true){  表示A }else {  表示B } ?> </body></html> というように、ある条件の真偽によって表示を切り替えているのですが その肝心の条件がどこに設定されているのかわかりません。 このphpのファイル内には設定を読み込むような処理はありませんでした。 phpのload時に条件を設定する場所、方法にはどのようなものがあるのでしょうか。 http://www.xxx.com/test.php?分岐の式 のようなことは可能なのでしょうか? また、これらのことを知るにはPHPのどの部分を勉強すればよいのでしょうか。 つたない説明で申し訳ないのですがよろしくお願いします。

    • ベストアンサー
    • PHP
  • wordpressで月だけを表示させたい。

    <?php if (function_exists('time_since')) { echo time_since(abs(strtotime($post->post_date_gmt." GMT")), time()); gt; ?> ago<?php } else { the_time('F jS, Y') ?><?php } ?> お世話になります。 wordpressなんですが、 上記のコードだと 11月 5th, 2006 このように出力されるのですが 11月と2006つまり 日を出力させたくないのですが どのようにコードを変えればよろしいでしょうか? 教えてください。お願いします。

    • 締切済み
    • PHP
  • 条件分岐が多いIF分の書き方について_2

    if (制度コード.compareTo ("08") == 0 && 旧共済従前額保障表示 .compareTo ("1") == 0) { out.print ("*"); } else if (制度コード.compareTo ("09") == 0 && 上乗有無表示 .compareTo ("1") == 0 && 上乗従前額保障表示 .compareTo ("1") == 0) { out.print ("*"); } else if (制度コード.compareTo ("09") == 0 && 独自有無表 .compareTo ("1") == 0 && 独自従前額保障表示 .compareTo ("1") == 0) { out.print ("*"); } else { out.print(" ");} } この条件の中に 新たな条件の ただし共通退職時共済識別表示が4の場合だけout.print (" ");とするを 加えたいのですが 普通に加えると 反応しません。 過去の投稿のアドバイスから色々と試したのですが どなたかアドバイスお願い致します。 } else if ( 共通退職時共済識別表示.compareTo ("4") == 0) { out.print (" ");

    • ベストアンサー
    • Java

専門家に質問してみよう