実用的ではないコードですが、WP_HTML_Tag_Processorの挙動を確認します。
WP_HTML_Tag_Processorの処理の流れ
- 変更を加えたいHTMLコードを準備する。
- 引数としてWP_HTML_Tag_Processorに渡して解析する。
- $htmlを走査して、最初に見つかった<p>にクラス名を付与する。
- 変更されたHTMLを出力する。
- その場で出力されるため、ブラウザの上辺に表示される
親タグにクラスを付与する
$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>