web関連

wordpressでショートコードを作成して投稿や固定ページでphpファイルを読み込む方法

wordpressでショートコードを作成して投稿や固定ページでphpファイルを読み込む方法

A氏(お客さん)からカスタム投稿の一覧をショートコードにして固定ページに埋め込みたいと依頼がきたのでイラッとしながら一覧用のphpファイルを用意してショートコード化の作業した時の備忘録

とりあえず作って出力する方法

とりあえず出力して使えることを確認したい方は以下のコードをfunction.phpに書いてください。

function sample_shortcode() {
  return "ショートコードの表示テストです。";
}
add_shortcode('sample', 'sample_shortcode');

以下の記述を固定ページや投稿ページに書けば出力できます。

[sample]
出力が確認で来たらphpファイルをショートコード化して読み込みます。

特定のphpファイルをショートコードにして読み込む方法

function.phpに以下のコード記述します。

function sample_code_Include($params = array()) {
extract(shortcode_atts(array('file' => 'default'), $params));
ob_start();
include(STYLESHEETPATH . "/$file.php");
return ob_get_clean();
}
add_shortcode('samplecode', 'sample_code_Include');

「samplecode」と「sample_code」の部分は任意で変えてください。
下記コードを投稿・固定ページに書きます。

[samplecode file='test']

今回は、ショートコードを入れた投稿・固定ページ側で「test.php」を読み込みたいので「file=’test’」と記述し、function.phpの「$file」に「test」が出力され「test.php」が呼び出されています。

「ob_start();」「return ob_get_clean();」調べても「バッファリング」とかよくわからない単語が出てきた。出力するはずの内容をため込んで変数に代入したり後の条件で出力させなかったりできるらしい…?

テンプレートphp内でショートコードを使う方法

投稿や固定ページ以外にも、テンプレートphpファイル内でもショートコードが使えるらしいので、メモ

<?php echo do_shortcode('[samplephp file='test']'); ?>
今回の場合だと、phpファイルを呼び出すショートコードなので「get template part()」でいいわな…

ウィジェットでショートコードを使う場合

function.phpに以下のコード1行追加するだけ。

add_filter('widget_text', 'do_shortcode');
最近、サイドバーのある案件そもそもほとんどないので使ったことない、一応メモ

おまけ

個人的にショートコードは、作った方がブログなんかが更新しやすいと思う
以下のコードは、結構多用している吹き出しのコメントのコードをショートコードにしている例。

function skomeFunc( $atts, $content = null ) {
return '
' . $content . '
'; } add_shortcode('skome', 'skomeFunc');
[ skome ](「$content」の部分、テキストが入ります。)[ /skome ]で「吹き出しコメント」を簡単に作れる。
ってか↑半スぺいれないとショートコードとして読み込まれてしまうんだが、エスケープのさせ方がわからない…

ショートコードは個人的にもブログなんかで使ったりするけど、マジで便利。
投稿や固定ページが汚くならないので助かる。