Short Codes

公開日:2017年12月10日 / 最終更新日:2017年12月16日
本ブログでは、WordPress のシュートコードを頻繁に利用しています。ショートコードは、テーマの functions.php に記述していく方法があるようですが、ショートコードが多くなるとかなりの量のコードを加えていく必要があり、funtions.php が解読できなくなる!即ち管理できなくなる。

そこで、本ブログでは、ショートコード毎に PHP ファイルを作成して、その PHP ファイルをショートコードを利用して投稿記事や固定ページに読み込む方法をとることにしました。

はじめに

投稿記事や固定ページで PHP ファイルを読み込むために、functions.php に以下のコードを加えます。最初のコメントは、個人的に参考サイトを記憶しておきたいために記述しているだけで、本来は必要ないと思います。

/*----------------------------------------
ショートコードを使ったphpファイルの呼び出し方法
参考サイト:takayakondo.com/wordpress-php-include/
------------------------------------------*/
function my_php_Include($params = array()) {
extract(shortcode_atts(array('file' => 'default'), $params));
ob_start();
include(STYLESHEETPATH . "/myphp/$file.php");
return ob_get_clean();
}
add_shortcode('myphp', 'my_php_Include');

本ブログでは「子テーマ」を利用しているので、PHP ファイルは「子テーマ」ディレクトリーに配置することになるのですが、管理しやすいように、「子テーマ」内の myphp というディレクトリーに配置することにしました。上記コードの「/myphp/$file.php」という部分で指定しています。

後は、ショートコードのための PHP ファイルを作成して、myphp ディレクトリーに配置。ショートコードで実行すべきファイルを指定すれば出来上がりになります。実際には、固定ページに下記のようなショートコードを書けば完了です。

Short Code

実際には、実行したい PHP のファイル名を表記するようにします。

固定ページの公開日と最終更新日を表示する

公開している固定ページに「公開日」と「最終更新日」を表示するためのショートコード用の PHP ファイルです。ファイル名を「lastmodified.php」にしました。本ページタイトル下にある「公開日」と「最終更新日」が下記のファイルを実施した結果になります。

<div class="lastmodified">
公開日:<?php the_time('Y年m月d日'); ?> 
<?php if (get_the_modified_date('Y年m月d日') != get_the_time('Y年m月d日')) : ?>
 / 最終更新日:<?php the_modified_date('Y年m月d日') ?>
<?php endif; ?>
</div>

上記の PHP ファイルを実行後、スタイルを整えるために「子テーマ」の style.css にスタイルを指定しています。上記のコードは、「最終更新日をWordPressの記事に表示する方法 | ネタワン」を参照しています。

投稿記事や固定ページの好きな場所に、特定タグに関する投稿記事をリストする

かなり苦労しました!重要なことは「WP_Query 関数」を利用すること!投稿記事「WordPressで特定のタグがついた記事一覧を表示させる記述方法【WP_Query】 | かわたま.net」を参考にしましたが、コピペでは本ブログでは機能せず・・・コードを多少変更して以下のコードを利用しています。

<table>
<tr><th width=160>公開日</th><th>投稿記事タイトル</th></tr>
<?php
	$temp = $wp_query;
	$wp_query = null;
	$wp_query = new WP_Query();
	$wp_query->query ('post_type=post&posts_per_page=10&tag_id=24');
?>
<?php while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
<!-- ループさせたい内容 -->
	<tr><td width=160 style="font-size:1.000rem; font-size:16px;"><strong><?php the_time('Y年m月d日'); ?></strong></td>
	<td style="font-size:1.000rem; font-size:16px;"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></td></tr>
<!-- ループさせたい内容 end -->
<?php endwhile; ?>
<?php $wp_query = null; $wp_query = $temp; ?>
</table>

コード内にある参考サイトのようなパラメーターのコーディングでは機能せず、必死で調べて「$wp_query->query ('post_type=post&posts_per_page=10&tag_id=24');」というコーディングに変更することで機能するようになりました!

固定ページを最終更新日順にリストする

固定ページを頻繁に更新しても、どれを更新したっけ!?なんてことが頻繁に起きるようになってきました。そこで、サイドバーに固定ページを更新順にリストしたいと考えて、以下のようなコードをショートコードで呼び出すようにしました!

<table>
<?php
    $args = array( 'posts_per_page' => 10,
					'orderby' => 'modified',
					'post_status' => 'publish',
					'post_type' => array( 'page' ) );
    $query = new WP_Query( $args );
    if ($query->have_posts()):
    while ($query->have_posts()) : $query->the_post();
?>
<tr><td width=140 style="font-size:14px; font-size:0.875rem;"><?php the_modified_date('Y年m月d日'); ?></td><td style="font-size:14px; font-size:0.875rem;"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></td></tr>
<?php endwhile; ?>
<?php endif; ?>
</table>

サイドバーにショートコードを埋め込んで PHP を実行するために、functions.php に以下のコードを挿入しています。

/*----------------------------------------
サイドバーのテキストウィジェットでショートコードを利用できるようにする
参考サイト:https://blog.s-giken.net/115.html
------------------------------------------*/
add_filter('widget_text', 'do_shortcode' );

たったの 1 行を挿入することで、ショートコードが機能するようになるんでね!素晴らしい。