WordPress著作権表示のためのPHPコードについての質問

このQ&Aのポイント
  • WordPressでオリジナルテーマを作成中の方が、footer.phpに著作権表示の年度を追加したいと考えています。
  • PHPのコードを使用して最古記事の年から最新記事の年までを表示することが目標です。
  • しかし、最新記事の年のみが表示される場合、最新記事の年のみを表示したいのに最新記事の年-最新記事の年と表示されてしまいます。この問題の解決策をご教示ください。
回答を見る
  • ベストアンサー

Wordpressのタグを使ったPHPで著作権表示

Wordpress でオリジナルテーマを作っています。 footer.php に著作権の年度表示をしようと思い、以下のように記述しました。 <?php $oldest = get_posts( 'numberposts=1&orderby=post_date&order=ASC' ); ?> <?php foreach( $oldest as $post ) : setup_postdata( $post ); endforeach; ?> <?php $oldest = the_date( 'Y' ); $latest = date( 'Y' ); ?> <?php if ( $oldest == $latest ) : echo $latest; else : echo $oldest.'-'.$latest; endif; ?> 最古記事の年を取得し、「最古記事年-最新記事年」というふうに出力します。 最古記事の年が最新記事の年と同じなら最新記事の年のみを出力、というようにしたかったのですが、 2008年や2009年の記事がある場合はちゃんと「2008-2010」と表示されるのですが、2010年の記事しかなかった場合「2010」とのみ表示されるはずが「2010-2010」となってしまいます。 どうか皆さんの知恵をお貸しください。よろしくお願いいたします。

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • duron
  • ベストアンサー率77% (73/94)
回答No.1

Wordpressは使用したことがないので想像になってしまいますが・・・ the_date()というものを調べると、第4パラメータがtrueである場合はページに出力 falseである場合はPHPで使用できる値として日付を返す、とありました。 そしてデフォルト(指定なし)はtrueであるようです。 そのため (1)<?php $oldest = the_date( 'Y' ); $latest = date( 'Y' ); ?>では $oldestには何も設定されず、記事の年が出力される。 (2)<?php if ( $oldest == $latest ) : echo $latest; else : echo $oldest.'-'.$latest; endif; ?> では、$oldestになにも設定されていないので必ず偽となり 「'-'.$latest」が出力される。 (1)と(2)の出力がくっついて「2008-2010」「2010-2010」となっているのではないでしょうか? <?php $oldest = the_date( 'Y', '' ,'' , false ); $latest = date( 'Y' ); ?>と変更して確かめてみてください。

参考URL:
http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/the_date
nyankonabe
質問者

お礼

うわわわわ X/ パラメータの記述忘れなんてお恥ずかしい限りでございます…! ずっとforeachの位置とかいじってました… duronさんのおかげでうまくいきました!ありがとうございます! 回答も予想以上に早く、感謝感謝です。:D

関連するQ&A

  • WordPress PCとスマホで表示を切り替える

    PCでは記事一覧5件、スマホでは3件表示するようにしたいです。 条件分岐タグを使って、PCとスマートフォンで記事の一覧表示を切り替える方法がうまくいきませんでした。 https://handywebdesign.net/2017/11/wp-is-mobile/ 改造前のコード(問題なく表示できました) <ul> <?php $latest_posts = get_posts( array( 'posts_per_page' => 5, // 表示する記事の数 'category_name' => '投稿ID',// 投稿IDを取得 'fields' => 'ids', ) ); foreach( $latest_posts as $post ): setup_postdata( $post ); if( has_post_thumbnail() ) { $post_thumb = get_the_post_thumbnail( '', 'post_thumbnail' ); // アイキャッチがあるときはアイキャッチを表示 } else { $post_thumb = '<img src="' . get_template_directory_uri() . '/img/noimage.gif" width="100" height="100" alt="デフォルト画像" />'; // アイキャッチがないときは《noimage.gif》を表示 } $post_categories = get_the_category(); // カテゴリーを取得 $post_content = wp_trim_words( get_the_content(), 30, '…' ); // 30字分を抜粋 ?> <li <?php post_class(); ?>> <a href="<?php the_permalink(); ?>"> <div class="blogListimg"> <?php echo wp_kses_post( $post_thumb ); ?> </div> <!-- アイキャッチここまで --> <p class="post-time blogDt"><?php the_time('Y.m.d'); ?></p> <p class="post-categories blogCt"><?php echo esc_html( $post_categories[0]->name ); ?></p> <h3 class="post-title"><?php the_title(); ?></h3> <p class="post-content blogBf"><?php echo esc_html( $post_content ); ?></p> </a> </li> <?php endforeach; wp_reset_postdata(); ?> </ul> PCとスマートフォンで記事の一覧表示を切り替えるコード 参考サイトを参考にfunctions.phpにfunction is_mobile() コードを追加。 トップページのphpに以下を改造。 <?php if ( is_mobile() ) : ?> <?php $latest_posts = get_posts( array( 'posts_per_page' => 5, // 表示する記事の数 'category_name' => '投稿ID',// 投稿IDを取得 'fields' => 'ids', ) ); foreach( $latest_posts as $post ): setup_postdata( $post );  ・  ・  ・ <?php else: ?> <?php $latest_posts = get_posts( array( 'posts_per_page' => 3, // 表示する記事の数 'category_name' => '投稿ID',// 投稿IDを取得 'fields' => 'ids', ) ); foreach( $latest_posts as $post ): setup_postdata( $post );  ・  ・  ・ <?php endforeach; wp_reset_postdata(); ?> </ul> 結果は真っ白になってしまいました。 HTMLソースも真っ白です。 空白はSublime Textのテキストエディターを使っていますので、確認しております。 どこが違うか、教えてくださいますか? よろしくおねがいします。

    • ベストアンサー
    • PHP
  • Wordpressで記事がない場合にメッセージ表示

    現在Wordpressで特定のカテゴリを一覧表示させる設定を行っています。 ただ、記事が一件もない場合に、その旨を伝えるメッセージを表示させたいのと全てを非表示にさせたいと思っているのですが上手くいきません。(メッセージを表示とコンテンツ全体非表示の2つの方法をお伺いしたいです) 以下、実際のソースになるのですが、該当するカテゴリに記事が0件の場合 「○○に関する記事は現在ありません。」 と表示させるにはどうしたらよいでしょうか? <h2 class="entry-title">カテゴリ1の投稿一覧</h2> <div class="container"> <?php $postslist = get_posts('numberposts=-1&orderby=post_date&order=DESC&cat=1'); foreach ($postslist as $post) : setup_postdata($post); ?> <ul class="hogehoge"> <a href="<?php the_permalink(); ?>" ><img src="<?php echo catch_that_image(); ?>" /></a> <li><a href="<?php the_permalink();?>"><b><?php the_title(); ?></b></a><br /> <a href="<?php the_permalink();?>"><?php echo mb_substr(get_the_excerpt(),0, 80);?>…</a> </li> </ul> <?php endforeach; ?> </div><!-- /container --> 2つ目の質問となりますが、投稿が0の場合にメッセージの表示ではなく、 <h2 class="entry-title">カテゴリ1の投稿一覧</h2> から、 </div><!-- /container --> まで、全てのレイアウトを含めた表示を非表示にするにはどのような定義を行えばよいでしょうか? 試行錯誤試してみたのですが、本件2つの方法が解決できませんでした。 お詳しい方いらっしゃいましたらアドバイスのほどお願いいたします。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • WP トップページに投函した画像を表示

    トップページに最新記事を並びます。 下記のプログラムはタイトルと記事の抜粋のみです。 記事内にある画像を表示するにはどうすれば良いでしょうか? アイキャッチ画像とは別にしたいです。 宜しくお願いします。 <?php $cat = 'info'; //スラッグ $num = '5'; //記事表示数 global $post; $term_id = get_category_by_slug($cat)->term_id; $myposts = get_posts('numberposts=' .$num. '&category_name=' .$cat); if ($myposts) { echo '<ul>'; foreach($myposts as $post): setup_postdata($post); echo '<li><a href=' .get_permalink(). '>'; echo '</a>'; echo '<h4><a href='.get_permalink().'>'. the_title("","",false).'</a></h4>'; echo '<p>' .mb_substr( strip_tags( $post -> post_content ), 0, 30 ). '...</p></li>'; endforeach; echo '</ul>'; } ?>

    • ベストアンサー
    • 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
  • WordPressのtag.phpのループ回数

    WordPressでタグの一覧ページtag.phpを作成してループを読み込ませたのですが、10記事しか表示されません。ループ部分のコードは以下のとおりです。 <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <div> <a href="<?php the_permalink();?>" title="<?php the_title_attribute(); ?>"><img src="<?php echo wp_get_attachment_url( get_post_thumbnail_id() ); ?>" alt=""></a> <p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> </div><!-- /.child-box --> <?php endwhile;?> <?php else:?> <?php endif;?> 該当する記事は40ほどあるのですが、違うタグで試してもやはり10記事しか表示されません。 色々と試したのですが原因がわかりません。ご教授いただけませんでしょうか。

    • ベストアンサー
    • PHP
  • WordPress 最新記事をまとめてURLにする

    参考のURL https://www.buzzhook.co.jp/ 下の方に「BACKYARD BLOG」があります。 アイキャッチ画像、年月日、カテゴリー、タイトル、抜粋全てどれをクリックしてもURLへジャンプします。 HTMLソースは下記になります。 <li> <a herf="#"> . . . </a> </li> WordPressのトップページも同様にしたいのですが、PHPプログラムはまだ初心者なので、うまくいきませんでした。結果はアイキャッチのみURLでした。 どこが違うのでしょうか? 宜しくお願いします。 <!-- main --> <main> <!-- 最新記事リスト --> <ul> <li> <a href="<?php the_permalink(); ?>"> <?php query_posts('posts_per_page=5'); ?> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <!-- アイキャッチ表示 --> <?php if (has_post_thumbnail()) : ?> <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('thumbnail'); ?></a> <?php else : ?> <a href="<?php the_permalink(); ?>"><img src="<?php bloginfo('template_url'); ?>/img/noimage.gif" width="100" height="100" alt="デフォルト画像" /></a> <?php endif ; ?> <!-- カテゴリー表示 --> <?php echo get_the_category()[0]->name; ?> <!-- 抜粋 --> <?php echo get_the_excerpt(); ?> <span class="date"> <?php the_time('Y年n月j日'); ?> <?php $days=30; $today=date('U'); $entry=get_the_time('U'); $diff1=date('U',($today - $entry))/86400; if ($days > $diff1) { echo '<img src="images/new.gif" alt="New" />'; } ?> </span> </a> </li> <?php endwhile; endif; ?> <?php wp_reset_query(); ?> </ul> <!-- 最新記事リストここまで --> </main>

    • ベストアンサー
    • PHP
  • PHPで指定した日付の1ケ月前表示

    MySQLにある日付を拾ってきて表示しています。 <?php echo $row_target_date['ap_date']; ?> 上記のPHPでは、MySQLのテープルのap_dateカラムにある日付を拾ってきて表示するようにしています。 この1ケ月前を表示したいと考えています。 <?php echo "1月前:" . date("Y/m/d",strtotime("-1 month" ,strtotime("echo $row_target_date['ap_date']"))) . "<BR>"; ?> では表示できませんでした。 表示方法についてご指導いただきたくお願い致します。

    • ベストアンサー
    • PHP
  • formタグについてPHP

    他でも質問しましたが、xamppはもともと練習に使うつもりでしたが、 現在はレンタルサーバーを使っているのでここで試したらどうかと 帰りの電車の中で考えました。 ※送るデーター <form acition="index.php"method="POST"> <p>氏名<input type="text" size="20" name="ad"></p> <input type="submit" value="送信"> </form> ※受け取るデーター index.php <?php echo$_POST['ad1']; echo$_POST['ad2']; ?> 質問1.上記に名前が書かれれば、サーバーに引き渡したデーターを ブラウザーに表示ができるのでしょうか? 質問2.echoはeachとは違うのでしょうか? 質問3.actionのところによくメールアドレスが入っていたりするような気がします。 メールアドレスでも受け取れるのでしょうか?

    • 締切済み
    • PHP
  • 自作PHPブログでの記事を10件ずつ表示する方法に

    自作PHPブログでの記事を10件ずつ表示する方法について http://ponk.jp/php/basic/blog こちらのサイトさんを参考にPHPで自作のブログを制作しているのですが、 最新の記事10件ずつ表示させたい場合はどのような記述をすれば良いのでしょうか? 具体的に書いて頂けると嬉しいです。 「前ページ」と「次ページ」的なリンクを貼りたいと思っております。 一番最古の記事のページまで行くと「前ページ」リンクも消えるようにしたいのです。

    • ベストアンサー
    • PHP
  • PHPでユーザ登録フォーム&表示プログラムの作成

    質問させていただきます。 PHPでユーザ登録フォームと表示プログラムの作成をしているのですが、 登録フォームはなんとかできたのですが、表示プログラムに添付画像のようにテーブルに出力させるにはどうやればいいでしょうか。 またこのプログラムだと若干エラーが出ているようでそれも気になりまして、教えていただければ幸いです。 <?php echo "<table border=1>"; echo "<tr><td>姓(名前){$_POST['ln']}</tr></td><tr><td>名(名前){$_POST['fn']}</tr></td><br />"; echo "性別 : "; if($_POST['seibetsu'] =="1") echo "男"; else echo "女"; echo "<br />"; echo "都道府県 : {$_POST['pref']}<br />"; echo "市区町村 : {$_POST['addr1']}<br />"; echo "番地 : {$_POST['addr2']}<br />"; echo "生年月日 : {$_POST['year']}年{$_POST['month']}月{$_POST['day']}日<br />"; echo "アドレス : {$_POST['email']}<br />"; echo "電話番号 :{$_POST['phone1']}-{$_POST['phone2']}-{$_POST['phone3']}<br />"; ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう