WordPress構築中にに記事本文の中に記事の一部を表示したいという時があるでしょうか?今回は記事本文中でPHPを使用できるようにする方法をまとめてみました。
記事本文でPHPが実行できますと、表示の仕方に幅ができます。
方法1:「Exec-PHP」プラグインを使用する
「Exec-PHP」プラグインは記事本文内でテンプレートタグを使用することをできるようにするプラグインです。ただセキュリティ上あまりよろしくないらしいのです。
以下「Exec-PHP」プラグインページ
https://wordpress.org/plugins/exec-php/
方法2:function.phpの変更で対応
function.phpに以下のような記述を書きます。
[php]
/**
* Inline PHP
*/
function exec_php($a)
{
try {
eval(‘ob_start();’.$a[1].’$r = ob_get_contents();ob_end_clean();’);
} catch (Exception $e) {}
return $r;
}
function inline_php($content)
{
return preg_replace_callback(‘/<exec>((.|\n)*?)<\/exec>/’, ‘exec_php’, $content);
}
add_filter(‘the_content’, ‘inline_php’, 0);
[/php]
記事本文には以下のように記述するとphpが実行できるようになります。
[html]
<p>記事本文。記事本文。記事本文。記事本文。記事本文。記事本文。記事本文。記事本文。</p>
<exec>
echo ‘Today: ‘ . date(‘Y-m-d’);
</exec>
<p>記事本文。記事本文。記事本文。記事本文。記事本文。記事本文。記事本文。記事本文。</p>
[/html]
ただしWYSIWYGなど使用すると表示が変になったりするので、HTMLタグでの編集のみにする必要があります。
参考サイト:【WordPress】投稿の中でphpを実行したい
http://www.softel.co.jp/blogs/tech/archives/2031
方法3:記事本文内でショートコードを使用できるようにする
function.phpに以下のような記述を書きます。
[php]
function getCatItems($atts, $content = null) {
extract(shortcode_atts(array(
"num" => ‘5’,
"cat" => ”
), $atts));
global $post;
$oldpost = $post;
$myposts = get_posts(‘numberposts=’.$num.’&order=DESC&orderby=post_date&category=’.$cat);
$retHtml='<ul>’;
foreach($myposts as $post) :
setup_postdata($post);
$retHtml.='<li><a href="’.get_permalink().’">’.the_title("","",false).'</a></li>’;
endforeach;
$retHtml.='</ul>’;
$post = $oldpost;
return $retHtml;
}
add_shortcode("list", "getCatItems");
[/php]
記事本文には以下のように記述するとfunction.phpに記載したphpが実行できるようになります。
[html]
<p>記事本文。記事本文。記事本文。記事本文。記事本文。記事本文。記事本文。記事本文。</p>
[list cat="1" num="10"]
<p>記事本文。記事本文。記事本文。記事本文。記事本文。記事本文。記事本文。記事本文。</p>
[/html]
※こちらで紹介しているコードは特定のカテゴリの新着記事一覧を出力するショートコードです。
ショートコードであればWYSIWYGを使用しても崩れないようでした。
(使用しているWYSIWYGによっては崩れる可能性があります。)
参考サイト:記事内に特定カテゴリの新着一覧を出すショートコード
http://appofit.com/wordpress/template-wp/shortcode-wp/