functions.php に関数の追加と実行

WPはfunctions.phpに新しい関数を定義すればショートコード[/]を使って呼び出し実行する事が出来ます。

functions.phpに関数の追加

functions.phpを変更する時には親テーマファイルでは無く、子テーマファイルを編集する事をお薦めします。今回のテーマはSimplicity2です。そこでまずSimplicity2 child(子テーマ)のfunctions.phpを開きます。

  • 外観ー>テーマエディターをクリック
  • 右上の編集するテーマを選択でSimplicity2 childを選択
  • その下のテーマのための関数で、function.phpを選ぶ
  • 開いたfunction.phpファイルに青枠のコードを追加
    • 151行:<?php
      • phpコードの始まりを示す。
    • 152行:function my_function()
      • 関数名の定義
      • 今回は、”Title_List()”と定義している。
    • 153行:関数の内容
      • ‘これはテスト’という文字列を返す。
      • これで画面にこの文字列が表示されます。
    • 154行:関数の終了
    • 155行:add_shortcode( ‘T_List’, ‘Title_List’ );
      • この関数を本文から呼び出す為に名前を登録する関数。
      • 第一引数:呼出に使用する名前
      • 第二引数:function.phpに登録した関数の名前
  • 入力終了後画面の下にある、ファイルを更新 ボタンを押す。
    • これで変更が適応されます。
    • もし、変更に問題が有った場合ファイルの更新が出来ない場合が有ります。

投稿ページ等からの関数の呼出

新規投稿を選びます。

関数の呼出は、ショートコード[/]を使います。Simplicity2ではウィジェットに以下の様に表示されています。

これを選んで、下記の様に呼び出したい関数名を記入します

入力が済んだらプレビューして下さい。下記の様に、”これはテスト”と表示されます。正しく関数が実行されています。

関数に変数を渡す

ショートコードから関数への値の渡し方。extract(shortcode_atts( $pairs , $atts, $shortcode ));を使います。

  引数       説明
 $pairs    (配列) (必須) サポートするすべての属性の名前とデフォルト値
 初期値: なし
 $atts  (配列) (必須) ユーザーがショートコードタグに指定した属性
 初期値: なし
 $shortcode     (文字列) ショートコード名です。これを指定すると、他のコードが属性を
 フィルターするために shortcode_atts_{$shortcode} フィルターを使用で
 きます。
 初期値: なし

例えば以下のコードを書いた場合

    function sample_callback($atts) {
      extract(shortcode_atts(array(
        'aaa' => 'Apple',
        'bbb' => 'Orange',
      ), $atts,$sample));
      $output = '<p>'. $aaa . ', ' . $bbb . '!</p>';
      return $output;
    }
    add_shortcode('sample', 'sample_callback');
  • array(‘aaa’ => ‘Apple’,’bbb’ => ‘Orange’,)
    • 変数 aaa, bbb を初期値 ’aaa’ => ‘Apple’、 ’bbb’ => ‘Orange’ として定義
  • shortcode_atts($def, $atts)
    • $def: ショートコードで使用するデフォルト値を指定した連想配列
    • $atts: 関数に渡すユーザーからの配列
  • extract(array &$array)
    • $array内の変数を関数内の変数に変換する。(関数内で使える様にする)

本体からの値の引き渡しと戻り値は以下の様になる

  • [sample]
    • 引数が省略されたので、デフォルトの ‘aaa’ => ‘Apple’ ’bbb’ => ‘Orange’
  • [sample aaa=”Banana”]
    • ‘aaa’ => ‘Banana’ ’bbb’ => ‘Orange’
  • [sample aaa=”Banana” bbb=”Grape”]
    • ‘aaa’ => ‘Banana’ ’bbb’ => ‘Grape’