WordPress フッターにコピーライト表記を表示

  Code Tips minimum Theme

footer にコピーライト表記を表示するようにしてみます。

 

作成中の「Code Tips minimum Theme」のフッターでは、まだ表示する情報が無い状態です。

【footer.php】

<?php wp_footer(); ?>
</body>
</html>

 

コピーライト表記の書式

以下にならってコピーライト表記を出力するよにしてみます。

万国著作権条約に基づく著作権表示には、次の3つの表示が必要である。
・©(丸の中にC、丸C、マルシー)の記号 (symbol ©)
・著作権者の氏名 (name of the copyright proprietor)
・最初の発行の年 (the year of first publication)
順序は定められておらず、この順序でなくてもいい。慣習的に「©」を最初に書くことが多いが、氏名と年の順序はさまざまである。
使用する文字や紀年法も特に定められていないが、国外での著作権保護のためという目的上、ラテン文字と西暦を使うのが普通である。

Wikipedia : 著作権表示

 

  • © マークは &copy; で表示されます。
  • 「著作権者の氏名」は bloginfo('name') でサイト名を表示します。
  • 「最初の発行の年」は最初の投稿の年を記述します。

 

<footer>&copy; <?php bloginfo('name'); ?> 2015.</footer>
<?php wp_footer(); ?>
</body>
</html>

以上で完了なのですが、「最初の投稿の年」をテンプレートタグで自動で取得して表示するようにしてみます。

 

最初の投稿の年の取得

WP_Query() を使って最初の投稿の情報を取得し、get_the_date('Y') でその投稿の年を取得します。

【footer.php】

<?php 
  $start_year = '';
  $start_year_query = new WP_Query();
  $start_year_param = array(
    'posts_per_page' => '1',
    'orderby' => 'date',
    'order' => 'ASC'
  );
  $start_year_query->query($start_year_param);
  if ($start_year_query->have_posts()) : while ($start_year_query->have_posts()) : $start_year_query->the_post();
    $start_year = get_the_date('Y') . ' - ';
  endwhile;
  endif;
  wp_reset_postdata();
?>
<footer>&copy; <?php bloginfo('name'); echo '&nbsp;' . $start_year; ?>.</footer>
<?php wp_footer(); ?>
</body>
</html>

 

出力は

<footer>&copy; {サイト名}&nbsp;2013.</footer>
© {サイト名} 2013.

となります。

 

WP_Query()

WP_Query は wp-includes/query.php に定義されているクラスで、WordPress ブログへの複雑な投稿やページのリクエストを取り扱います。

WordPress Codex : 関数リファレンス/WP Query

$the_query = new WP_Query();
$args = array(
    // パラメータをセットします
  );
$the_query->query($args);
if ($the_query->have_posts()) : while ($the_query->have_posts()) : $the_query->the_post();
  // 処理
endwhile;
endif;
wp_reset_postdata(); // クエリをリセットします。

 

パラメータ

WP_Query() のパラメータはたくさんあるので、今回は「最初の投稿の年」を取得する際に利用する「順序づけパラメータ」を見ていきます。

orderby
$orderby
文字列/配列
パラメータで指定した項目の値で投稿をソートする。デフォルトは date (post_date) です。
2つ以上のオプションを含めることもできます。
パラメータ 説明
none 順序をつけない。(バージョン 2.8 以降で使用可能)
ID 投稿 ID で並び替える。※大文字に注意
author 著者で並び替える。
title タイトルで並び替える。
date 日付で並び替える。
modified 更新日で並び替える。
parent 投稿/固定ページの親ID順。
rand ランダムで並び替える。
comment_count コメント数で並び替える。(バージョン 2.9 以降で使用可能)
menu_order 固定ページの表示順で並び替える。
固定ページ(固定ページ編集画面のページ属性ボックス)と添付ファイル(ギャラリー内のメディアの順番に相当)で使うことが最も多いでしょう。
しかしバラバラの値が入った menu_order を持つ任意の投稿タイプに対して使うことができます。(デフォルト値は 0)
meta_value カスタムフィールドで並び替える。
meta_key=keyname がクエリに存在しなければいけません。
また、ソート順は文字列順になることに注意して下さい。
数値だと予想外の挙動をします。(通常、1, 3, 4, 6, 34, 56となると思うところが、1, 3, 34, 4, 56, 6となります)
数値なら代わりに meta_value_num を使ってください。
カスタムフィールドの値を特定の型にキャストしたければ meta_type を指定できます。
有効な値は NUMERIC, BINARY, CHAR, DATE, DATETIME, DECIMAL, SIGNED, TIME, UNSIGNED です。( meta_query と同じ)
meta_value_num カスタムフィールドの値を数値として並び替える。(バージョン 2.8 以降で使用可能)
これもまた、meta_key=keyname がクエリに存在しなければならないことに注意して下さい。
こちらは meta_value 示したような数値での並べ替えを可能にします。
post__in post__in パラメータの配列に並んだ投稿 ID の順になります。(バージョン 3.5 以降で利用可能)

 

order
$order
文字列/配列
orderby パラメータについて昇順か降順かを指定します。デフォルトは DESC(降順)です。複数の order/orderby の組を配列で指定することもできます。
パラメータ 説明
ASC 最低から最高へ昇順 (1, 2, 3; a, b, c)
DESC 最高から最低へ降順 (3, 2, 1; c, b, a)

 

get_the_date()

get_the_date テンプレートタグは、現在の投稿(または指定された投稿)が書かれた日付を取得します。

WordPress Codex : テンプレートタグ/get the date

$pfx_date = get_the_date( $format, $post_id )

 

パラメータ
引数 説明
$format
文字列
オプション
日付の書式
初期値:date_format オプション の設定値(設定 » 一般 » 日付フォーマット)
$post
整数
オプション
日付を取得したい投稿の ID。省略すると現在の投稿から取得される。
初期値:null(現在の投稿)
戻り値
文字列 フォーマットされた日付の文字列

 

今回は西暦(20XX)のみを取得したかったので get_the_date('Y') としています。

 

最新の投稿の年を追加する

もし、「2013 – 2015」のように「最初の投稿の年 ~ 最新の投稿の年」としたい場合は、「最初の投稿の年の取得」のパターンを応用して次のようにします。

【footer.php】

<?php
  // 最後に投稿した年の取得
  $last_year = '';
  $last_year_query = new WP_Query();
  $last_year_param = array(
    'posts_per_page' => '1'
  );
  $last_year_query->query($last_year_param);
  if ($last_year_query->have_posts()) : while ($last_year_query->have_posts()) : $last_year_query->the_post();
    $last_year = get_the_date('Y');
  endwhile;
  endif;
  wp_reset_postdata();

  // 最初に投稿した年の取得
  $start_year = '';
  $start_year_query = new WP_Query();
  $start_year_param = array(
    'posts_per_page' => '1',
    'orderby' => 'date',
    'order' => 'ASC'
  );
  $start_year_query->query($start_year_param);
  if ($start_year_query->have_posts()) : while ($start_year_query->have_posts()) : $start_year_query->the_post();
    if (get_the_date('Y') != $last_year) {
      $start_year = get_the_date('Y') . ' - ';
    }
  endwhile;
  endif;
  wp_reset_postdata();
?>

<footer>&copy; <?php bloginfo('name'); echo '&nbsp;' . $start_year . $last_year; ?>.</footer>
<?php wp_footer(); ?>
</body>
</html>

 

出力は

<footer>&copy; {サイト名}&nbsp;2013 - 2015.</footer>
© {サイト名} 2013 - 2015.

となります。

 

Code Tips minimum Theme

【footer.php】

<?php
  $last_year = '';
  $last_year_query = new WP_Query();
  $last_year_param = array(
    'posts_per_page' => '1'
  );
  $last_year_query->query($last_year_param);
  if ($last_year_query->have_posts()) : while ($last_year_query->have_posts()) : $last_year_query->the_post();
    $last_year = get_the_date('Y');
  endwhile;
  endif;
  wp_reset_postdata();

  $start_year = '';
  $start_year_query = new WP_Query();
  $start_year_param = array(
    'posts_per_page' => '1',
    'orderby' => 'date',
    'order' => 'ASC'
  );
  $start_year_query->query($start_year_param);
  if ($start_year_query->have_posts()) : while ($start_year_query->have_posts()) : $start_year_query->the_post();
    if (get_the_date('Y') != $last_year) {
      $start_year = get_the_date('Y') . ' - ';
    }
  endwhile;
  endif;
  wp_reset_postdata();
?>
<footer>&copy; <?php bloginfo('name'); echo '&nbsp;' . $start_year . $last_year; ?>.</footer>
<?php wp_footer(); ?>
</body>
</html>