ショートコードでWordPressの投稿内で擬似的に関数を使う方法

wordpress

ショートコードとは

WordPressを運用していると、投稿内でも関数を使いたい場面にしばしば遭遇します。 私の場合だと画像パスを投稿内で指定していたために、ドメイン変更時に投稿全ての画像パスを打ち直す羽目になりました。 phpで画像パスを指定しておけば・・・

投稿内に直接php文を記述できるプラグインはありますが、セキュリティ面からphpの直打ちは好ましくありません。 そんな時には投稿内で擬似的に関数を使うためのショートコードという仕組みを使います。

ショートコードの使い方

function内にショートコードの内容、add_shorcode関数の引数にショートコード名,ショートコードファンクション名を記述します。 引数を指定することも可能です。

引数なしのショートコード

functions.php

function shortcode_func() {
  return "ショートコードサンプル";
}
add_shortcode('shortcode_name', 'shortcode_func');

引数があるショートコード

functions.php

function shortcode_func($atts) {
  extract(shortcode_atts(array(
    'atts' => 0,
    ), $atts));
  return "引数は" . $atts . "です";
}
add_shortcode('shortcode_name', 'shortcode_func');

複数の引数があるショートコード

functions.php

function shortcode_func($atts) {
  extract(shortcode_atts(array(
    'atts1' => 0,
    'atts2' => 1,
    'atts3' => 2,
    ), $atts));
  return "引数は" . $atts1 . "と"  . $atts2 . "と"  . $atts3 . "です";
}
add_shortcode('shortcode_name', 'shortcode_func');

ショートコードの使用

投稿内でショートコードを使う場合

投稿内で使う場合は[ショートコード]と記述するだけです。これでreturnに指定した値を取得することができます。

[shortcode_name]

phpテンプレートでショートコードを使う場合

phpファイル(テーマなど)でショートコードを使う場合はdo_shorcode関数を使用して呼び出す必要があります。

<?php do_shortcode('[shortcode_name]'); ?>

引数を渡す場合の書式

引数を渡す場合はこのように後ろに付け足します。

[showargs atts="atts"]
[showargs atts1="atts1" atts2="atts2" atts3="atts3"]

ショートコードで画像パスを設定してみる

ちなみにこのサイトで投稿内で画像を指定する場合、以下のようにしています。 これならドメインが変わってもショートコードを修正するだけで対応ができる訳です。

投稿内での記述

<img src="[img-path].jpg" alt="*">

ショートコードhttps://amaru.me/amaruweb/wp-content/uploads/sites/2/で画像フォルダパスを取得する

functions.php

function img-path($atts) {
  return get_bloginfo('url')."/wp-content/uploads/";
}
add_shortcode('img-path', 'img-path');

アマルウェブ HOME