WP_HTML_Tag_Processor

実用的ではないコードですが、WP_HTML_Tag_Processorの挙動を確認します。

WP_HTML_Tag_Processorの処理の流れ

  1. 変更を加えたいHTMLコードを準備する。
  2. 引数としてWP_HTML_Tag_Processorに渡して解析する。
  3. $htmlを走査して、最初に見つかった<p>にクラス名を付与する。
  4. 変更されたHTMLを出力する。
  5. その場で出力されるため、ブラウザの上辺に表示される

親タグにクラスを付与する

$html = '<div class="default-class">
	<p>あいうえお</p>
</div>';

$tag = new WP_HTML_Tag_Processor($html);

while ($tag->next_tag(array('tag_name' => 'div'))) {
	$tag->add_class('test');
}

echo $tag->get_updated_html();

結果

<div class="default-class test">
	<p>あいうえお</p>
</div>

1つ目の<p>にクラス名を付与する

$html = '<div class="default-class"><p>あいうえお</p></div>';

$tag = new WP_HTML_Tag_Processor($html);

if ($tag->next_tag(array('tag_name' => 'p'))) {
	$tag->add_class('test');
}

echo $tag->get_updated_html();

結果

<div class="default-class"><p class="test">あいうえお</p></div>

すべての<p>にクラス名を付与する

ループで回す

$html = '<div class="default-class"><p>あいうえお</p><p>あいうえお</p></div>';

$tag = new WP_HTML_Tag_Processor($html);

while ($tag->next_tag(array('tag_name' => 'p'))) {
	$tag->add_class('test');
}

echo $tag->get_updated_html();

結果

<div class="default-class"><p class="test">あいうえお</p><p class="test">あいうえお</p></div>

インデントは反映される

$html = '<div class="default-class">
	<p>あいうえお</p>
	<p>あいうえお</p>
</div>';

$tag = new WP_HTML_Tag_Processor($html);

while ($tag->next_tag(array('tag_name' => 'p'))) {
	$tag->add_class('test');
}

echo $tag->get_updated_html();

結果

<div class="default-class">
	<p class="test">あいうえお</p>
	<p class="test">あいうえお</p>
</div>