エス技研

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.

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

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

  関連記事

Export to Textで WordPressを csv出力

WordPressのデータを csv出力する Export to Textの使い方を解説しています。

WordPressグローバルナビ・メニューの編集の方法解説

グローバルナビであるメニューの編集方法の解説です。メニューの管理画面の使い方の解説と設定のポイント、テーマによって設定する項目が違う点などを解説します。

WordPressの一般設定 投稿設定 表示設定 ディスカッション メディア

基本的な設定を行う「設定」の解説です。ブログサイトを構築する際に必要な設定内容を一般設定、投稿設定、表示設定などの各項目を説明しながら設定内容を提示しています。

WordPressの投稿プレビューのURLを変更する方法

プレビューを表示する際のURLを変更する方法の解説。「サイトアドレス (URL)」に基づいて編集されるURLを任意のURLに変更する場合の方法とその解説を行います。

seesaaからWordPressに引越。インストールなど必要な全てを解説

seesaaブログからWordPressへの引越し解説。他のブログにはないseesaaブログからcanonicalとリダイレクトの設定方法を実装!

WordPressプログラム全体で定数や変数を利用する場合の設定方法

WordPressで関数を追加するときなど、全体で同じ変数を使いたいと思う場面の対処方法です。変数を記述する関数はfunctions.php、wp-config.phpのいずれか。

Advanced Custom Fields(ACF)のアドオン・ギャラリーの使い方解説

Advanced Custom Fieldsのアドオン・ギャラリーの解説記事。複数の画像を入力できる優れもので、画像のサイズ、容量などでの制限ができ、より厳密な管理が可能。

WordPressのSEOタイトル、キーワード、ディスクリプション編集解説

ヤフーやグーグルの検索結果を見ながらSEO視点でタイトル、ディスクリプションを書く際の基準を解説!スマホ対策も解説!

Theme My Loginでメール認証、管理者承認付の会員管理・基本編

会員管理をするプラグインTheme My Loginの解説。メール認証、管理者認証、reCAPTCHAによるいたずら登録を防止し、ログイン攻撃対応のセキュリティも備わっている。

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

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