ショートコードで使いたい!PHPコードのサンプル集


前回は「投稿ページでPHPを動かしたいならショートコードを使おう」という記事で、ショートコードを利用して、PHPファイルを投稿ページや固定ページで使えるようにする方法を紹介しました。

今回は、その仕組みを使って、実際に投稿ページや固定ページでPHPファイル動かしてみようと思います。

紹介するshortcode集

紹介するのは、以下の4本です。全てコピペでいけます。

  1. ページの最終更新日を表示する
  2. 公開した投稿記事数を表示する
  3. 公開した全記事の全文字数を合計して表示する
  4. 基準となる日から今日までの経過日数を表示する

なお、PHPのファイル名は、ご自身で好きなものに変更しても構いませんが、その際には、ショートコードの変更もお忘れなく。

詳しくは、前回の記事を参考にしてください。


1. ページの最終更新日を表示する(modified-date.php)

まずは、簡単なところから。ページの最終更新日を取得して表示します。modified-date.phpという空のファイルを作ったら、下のコードを放り込んでください。利用するときは、次のショートコードを使います。

[shortcode file='modified-date']

<?php
//最終更新日を表示
//使うときには、2017年3月27日 と記述する
the_modified_date('Y年n月j日') 
?>

2. 公開した投稿記事数を表示する(numposts.php)

公開した投稿の総数をカウントして表示します。空のファイル、numposts.phpを作ってら、以下のコードをコピペしてください。

[shortcode file='numposts']

<?php 
//投稿した記事の総数を表示するショートコード
//使うときには、35本 と記述する

	$count_posts     = wp_count_posts();
	$published_posts = $count_posts->publish;
	echo $published_posts .'本';
?>

3. 公開した全記事の全文字数を合計して表示する(wordcount.php)

公開済みの全記事の文字数を合算して表示します。利用者のためというよりも、サイト運営のモチベーションアップにつながるので、自分自身のために使っています。wordcount.phpというファイルを作ります。

[shortcode file='wordcount']

<?php
//投稿した記事の全文字数を表示
//使うときには、94,469文字と記述する

function wordCount() {
    global $wpdb;
    $query = "	SELECT post_content 
    			FROM $wpdb->posts 
    			WHERE post_type = 'post'
    			AND post_status = 'publish'
    		";
    $words = $wpdb->get_results($query);
    if ($words) {
    foreach ($words as $word) {
        $post = strip_tags($word->post_content);
        $count = mb_strlen($post);
        $totalcount = $count + $oldcount;
        $oldcount = $totalcount;
    }
    } else {
        $totalcount=0;
    }
return number_format($totalcount);
}
echo wordCount() . '文字';
?>

4. 基準となる日から今日までの経過日数を表示する(diffday.php)

基準日から今日までの経過日数を表示します。このサイトでは、サイト開設日から今日までの経過日数を何年何ヶ月で表示しています。ファイル名は、diffday.phpです。

使い方は、基準日の年を$yyyに、月を$mmm、日を$dddに記述します。このサイトの開設日は、2015年2月5日なので、そのような記述になっていますが、この部分を変更して、使いたい内容に改めてください。

[shortcode file='diffday']

<?php 
//サイト開設日から今日までの経過日数を表示
//使うときには、( 3年9ヶ月経過 ) と記述する

$yyy = 2015; //基準日の年
$mmm = 2;    //基準日の月
$ddd = 5;    //基準日の日
 
//計算したい過去の日付
  $mk1 = mktime(0,0,0,$mmm,$ddd,$yyy);
 
//今日
  $mk2 = mktime(0,0,0,date('n'),date('j'),date('Y'));
 
//差を一日の秒数で割る -> 日数となる
  $sa = ($mk2-$mk1) / (60*60*24);
  
//1年の平均日数 うるう年を踏まえて 0.25日を足す
  $yy  = 365.25; 
  
//1ヶ月の平均日数
  $mm  = 365.25 / 12;
 
//[年] 日数差を1年の平均で割る。端数は切り捨てる
  $YYY = floor( ($sa / $yy) );
  
//[月] 割り出した年と1年平均を掛けた日数を差から引き、1ヶ月平均で割る。端数は切り捨てる
  $MMM =  floor( ($sa - ($yy*$YYY) ) / $mm );
 
 echo '( '. $YYY .'年'. $MMM .'ヶ月経過' . ' )';
?>

まとめ

いかがですか?うまく動いたでしょうか?

皆さんも、ショートコード化して使いたいものがあれば、同じようなやり方で実装することが可能です。色々と応用が効きそうな方法なので、今後も面白い使い方があれば、追記していくつもりです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です