WordPress – ショートコードで出力されるHTMLを変更する do_shortcode_tagフック

WordPress
この記事は約2分で読めます。
スポンサーリンク

とある案件で、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

以上、ご参考になれば幸いです。
ありがとうございます。

コメント

タイトルとURLをコピーしました