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に追記することです。
————————————
|
1 |
add_filter('widget_text', 'do_shortcode' ); |
————————————
add_filterを書いておけばいい、それが分かってしまえば実に簡単です。
上記の add_filterの 1行を記述する場所は functions.phpの中であればどこでも構いませんが、分からなくならないように、ショートコードの関数を記述する数行上くらいに書いておくといいでしょう。
ちなみに、functions.phpが置いてある場所は、下記のファイルになります。
|
1 |
/{WordPressがインストールされている場所}/wp-content/themes/{テーマ名}/functions.php |
詳しくは、「WordPressの functions.phpがある場所」にも記事を書いています。
ウィジェットでショートコードを使えるようにする方法・その2
ウィジェットにショートコードを記述した場合、ショートコードが処理されず、ショートコードのコードそのものが表示されてしまうのは、ショートコードのパース処理が通らないことでプレーンテキストとして見られてしまうことに原因があります。
そのため、下記のように、ショートコードを実行する関数を通すことで情報を取得し、echoで表示させる、という方法もあります。
|
1 |
<?php echo( do_shortcode( '[shortcode1]' ) ); ?> |
※「shortcode1」は、「WordPress投稿にPHPを記述するショートコードの使い方add_shortcode」で作成したショートコードの関数です。
こちらの方法は、テンプレートでショートコードを表示させる際に利用する処理と同じですね。
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
WordPressの不正ログインを Force email loginで回避
WordPressのセキュリティ強化に Force email loginを使う理由と設定方法の解説をしています。
-
-
WordPressの管理画面と公開画面を別のドメインに分離して運用する方法
管理画面と公開画面のURLを違うドメインで設定・運用する方法を解説。管理画面と公開画面の場所を分離することでセキュリティ面でのメリットが大きくなります。
-
-
WordPressで月極駐車場検索サイトを構築し無料公開・使ったプラグインの紹介も
月極駐車場を検索するシステムをWordPressで構築。そのアナウンスと構築するために利用したプラグインの紹介。構築にどれくらいの期間がかかるのかの紹介。
-
-
wp_mail()関数でWordPressのスパム対策済のメールフォーム作成
WordPressでメール送信フォームを作成するための関数「wp_mail()」の使い方の解説。CC、BCC、添付ファイルも HTMLメールも設定可能。
-
-
FC2からWordPressに引越。インストールなど必要な全てを解説
FC2からWordPressへの引越し解説。内容は引越しメインではなくこれからWordPressでブログを構築する方向けのブログ構築の解説記事です。
-
-
Custom Post Type UIでカスタム投稿を設定・バージョン1.4対応解説
カスタム投稿をプラグインCustom Post Type UIを使って設定する方法を解説。バージョンアップにより設定する項目も増え、より柔軟な設定ができます。
-
-
WordPressで特定のURL、ページ、ファイル単位でBasic認証を設定する方法
WordPressはURLはmod_rewriteにより疑似的に作られていますが、特定のページ、特定のURL、ファイル単位でBasic認証を設定する方法を解説します。ツールも紹介。
-
-
BizVektor環境の引越しでメニュー、バナーが消える不具合の対応方法解説
BizVektor環境の引越し方法と不具合が発生しやすい箇所の解説です。引っ越し作業をする際にURLやファイルのパスを置換する際の手順解説と対応方法についての解説です。
-
-
WordPressでダブルクォートなどの文字が自動変換?原因と対処方法
ダブルクォート、シングルクォート、HTMLタグなどが自動変換関数によって入力と違う形で表示されます。原因を2つの関数ごとに説明し、対応方法を3パターン提示します。
-
-
カスタムタクソノミーのターム一覧をウィジェットにショートコードで編集
カスタムタクソノミーに属するターム(カテゴリ)の一覧を wp_list_categories()関数+ショートコードでウィジェットに編集するサンプルプログラムです。
Comment
初めまして
江村と申します。
記事を拝見した中で質問がございます。
私もウィジェットにショートコードを表示したいと考えています。
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...」の本来のショートコードの処理はすべて同じように記述します。