エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


WordPressのウィジェットでショートコードを使う方法add_filter

      2014/07/06

WordPressのウィジェットでショートコードを実行する

 

ショートコードとは?

 
投稿ページや固定ページで PHPの実行結果を編集したい場合には add_shortcode関数を利用したショートコードを使用します。
 
そのショートコードの詳細な使い方については「WordPress投稿にPHPを記述するショートコードの使い方add_shortcode」に詳しく書いていますのでそちらをご覧ください。
 
 
2014.06.07 追記
ウィジェットの設定に関しては、「WordPressのサイドバー(サイドナビ)はウィジェットで編集」に書いていますので、併せて参照ください。
 
 

ウィジェットでショートコードを使えるようにする方法

 
上記の使い方の通り「functions.php」に 関数とショートコードを呼び出す add_shortcodeを記述すれば、投稿ページや固定ページでは PHPの処理を実行した結果が編集されますので、ウィジェットでも処理されるはず、と思っていたのですが、ウィジェットでは動かないのです。
 
実は、ショートコードをウィジェットで動かすためには、それ用の add_filterという記述をする必要があったのです。
 
それは、下記の 1行を functions.phpに追記することです。
 
————————————

————————————
 
 
add_filterを書いておけばいい、それが分かってしまえば実に簡単です。
 
上記の add_filterの 1行を記述する場所は functions.phpの中であればどこでも構いませんが、分からなくならないように、ショートコードの関数を記述する数行上くらいに書いておくといいでしょう。
 
 
ちなみに、functions.phpが置いてある場所は、下記のファイルになります。

 
詳しくは、「WordPressの functions.phpがある場所」にも記事を書いています。
 
 

ウィジェットでショートコードを使えるようにする方法・その2

 
ウィジェットにショートコードを記述した場合、ショートコードが処理されず、ショートコードのコードそのものが表示されてしまうのは、ショートコードのパース処理が通らないことでプレーンテキストとして見られてしまうことに原因があります。
 
そのため、下記のように、ショートコードを実行する関数を通すことで情報を取得し、echoで表示させる、という方法もあります。
 

 
※「shortcode1」は、「WordPress投稿にPHPを記述するショートコードの使い方add_shortcode」で作成したショートコードの関数です。
 
こちらの方法は、テンプレートでショートコードを表示させる際に利用する処理と同じですね。

 - WordPress

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Comment

  1. 江村 より:

    初めまして
    江村と申します。

    記事を拝見した中で質問がございます。

    私もウィジェットにショートコードを表示したいと考えています。

    add_filter(‘widget_text’, ‘do_shortcode’ );
    をfunctions.phpに記述し、
    ウェルカートのカートに入れるのショートコード
    [button_to_cart item=”h-001″ sku=”h-001-01″ value=””]
    をウィジェットに表示したいので、テキストに記述しましたが、
    プレーンテキストとして認識されました。

    ですので、
    function shortcode1Func() {
    return “カート”;
    }
    add_shortcode((‘widget_text’, ‘do_shortcode’ );
    と記述し、
    ウィジェットのテキストに
    [shortcode1]
    を記述しましたが、反映されませんでした。

    何か間違っている所はありますか?
    ご多忙とは存じますが、宜しくお願いします。

    • エス技研 より:

      江村さん、コメントありがとうございます。
      長期休暇中のため、返信が遅くなりました。

      ウェルカートのショートコードに関しては検証していませんが、サンプルで作成された方に関しては、以下のようになります。


      function shortcode1Func() {
      return "カート";
      }
      add_shortcode('shortcode1', 'shortcode1Func');
      add_filter('widget_text', 'do_shortcode' );

      これでショートコードとして「[shortcode1]」を編集すると、そこに「カート」と文字が編集されます。
      「add_filter...」は、「add_shortcode...」の代わりになるものではなく、ショートコードを処理する箇所が本文中だけではなく、ウィジェットのエリアでも処理しますよ、というフィルターを追加する記述になります。
      ですので、「add_shortcode...」の本来のショートコードの処理はすべて同じように記述します。

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

WordPress データベースを管理するための強い味方のプラグイン WP-DBMANAGER

データベースを管理するための強い見方のプラグイン「WP-DBMANAGER」の使い方の説明です。

WordPressのログイン画面 URLを変更する 管理画面に Basic認証を設定する

ログインURLは誰でも知っています。そのまま使うとリスクが高まりますのでログインURLを変更し Basic認証で二重チェックをする方法を解説。

WordPressのカテゴリやタクソノミーにカスタムフィールド項目を追加する方法

WordPressのカテゴリやタクソノミーに編集する項目を追加する方法の解説。Advanced Custom Fieldsを使うと簡単。テンプレートに記述する方法も解説。

BackWPupでバックアップ・全体バックアップ具体的設定例

BackWPupその7。ファイル、DB全体をバックアップする具体的事例での説明です。

WordPressの functions.phpがある場所

WordPressのカスタマイズには大切な functions.phpですが、最初はその場所がどこなのか分かりませんのでその説明をしています。

Category Order and Taxonomy Terms Orderでカテゴリ・タクソノミーのタームの順番を並び替える

標準機能では行えないカテゴリやタクソノミーの並び替えを行うプラグインCategory Order and Taxonomy Terms Orderの紹介です。

WordPressの 外観のテーマのための関数の並び順

WordPressのカスタマイズの際にテーマのテンプレートを編集しますが、そのテーマファイルの並び順の解説です。

BackWPupでバックアップ・Jobの設定・保存する情報の設定

BackWPupその2。Jobのバックアップの基本部分と対象の設定についての解説。

Advanced Custom Fields管理画面の全項目完全解説・カスタムフィールド決定版!

カスタムフィールドを設定する最高のプラグイン。設定できる項目を全て網羅して解説。投稿の項目だけではなく、カテゴリやユーザ情報の項目を増やすことにも使えます。

SI CAPTCHA Anti-Spamを使って WordPressのコメントスパム対策をする

コメントスパム対策として入力させない対策の一つとしてCAPTCHAという方法がありそれを簡単に実装できるプラグインSI CAPTCHA Anti-Spamの解説です。