子テーマでも可。WordPressの固定ページでphpを使う方法
WordPressWordPressでは、ビジュアルエディタからテキストエディタに切り替えることによって、固定ページあるいは投稿ページにHTMLやCSSを書き込むことができるようになっています。
しかし、記述ミスが少しでもあると画面が真っ白になってしまうphpは、簡単にWordPressのエディタ上では扱えないようになっています。
そこでこの記事では、一手間加えることで固定ページ内にphpファイルを読み込ませることができるように、テーマをカスタマイズする方法を紹介します。
ちなみに子テーマでも利用可能です。 親テーマのphpを読み込ませる記事は探すと結構見つかるんですが、子テーマに入っているphpファイルを読み込ませる方法ってなかなか見つからなかったので書いてみました。
functions.phpを編集する
functions.phpに以下の記述を加えます。
function Include_my_php($params = array()) {
extract(shortcode_atts(array(
'file' => 'default'
), $params));
ob_start();
get_template_part('myTemplate/'.$file);
return ob_get_clean();
}
add_shortcode('myphp', 'Include_my_php');
phpファイルの作成と出力
phpを固定ページに出力するまでの手順です。
読み込ませたいphpファイルを作成
テーマディレクトリの中に「myTemplate」というフォルダを作成し、その中にphpファイルを作成します。
<h2>新着記事</h2>
<dl class="shinchaku">
<?php
$cat = get_category_by_slug('blog'); //カテゴリidをスラッグから取得
$args = array(
'numberposts' => 5, //表示する数
'category' => $cat->cat_ID //カテゴリid
);
$posts = get_posts($args); global $post;
if($posts): foreach($posts as $post): setup_postdata($post); ?>
<dt><?php the_time('Y年m月d日'); ?></dt>
<dd><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></dd>
<?php endforeach; endif; ?>
<?php wp_reset_postdata(); ?>
</dl>
例として、以下のような記述をしたshinchaku.phpというファイルを作りました。
実際に固定ページに出力する
固定ページに表示するには、固定ページに以下の記述をすればOKです。 ちなみにビジュアルエディタで書き込んでも何ら問題はありません。
[myphp file='shinchaku']
こんな感じになりました。
今回はブログ記事を選んで出力しましたが、お知らせのカテゴリのみ選んで取り出したりすればお知らせ一覧とかも固定ページ内で簡単に作れます。
広告