とある案件で、WordPressのプラグイン「Contact Form 7」のショートコードで出力した formタグにカスタムデータ属性を追加したいということがありました。
JavaScriptを使用する方法もありますが、フィルターフックで出来ないものかと思っていたら、フォーラムでご教示いただいたので、その備忘録です。
do_shortcode_tagフック
WordPressには、ショートコードで出力された内容をフィルタリングするフックが用意されていました。
PHP
apply_filters ( 'do_shortcode_tag', string $output , string $tag , array|string $attr , array $m )
パラメーター
- $output
- ショートコードの出力
- $tag
- ショートコード名
- $attr
- ショートコードの属性配列または空の文字列
do_shortcode_tag – Hook | Developer.WordPress.org
Filters the output created by a shortcode callback.
do_shortcode_tagフックでHTMLを書き換えて出力
str_replace関数を用いて「Contact Form 7」のショートコードで出力される <form> タグに foo を追加します。
子テーマの functions.php に追記して使います。
PHP
add_filter( 'do_shortcode_tag', function( $output, $tag, $attr ) { if ( 'contact-form-7' === $tag || 'contact-form' === $tag ) { $output = str_replace( '<form ', '<form foo ', $output ); } return $output; }, 10, 3 );
PHP: str_replace - Manual
PHP is a popular general-purpose scripting language that powers everything from your blog to the most popular websites i...
以上、ご参考になれば幸いです。
ありがとうございます。
コメント