WordPressで、独自テーマを開発しています。
投稿の出力時に「最初の<h2>の手前に独自の目次を入れる」などの処理のため、
get_the_content() で本文取得
↓
目次を入れるなどの加工
↓
echo apply_filters( 'the_content', $content ); // $contentは目次入れなどの終わった投稿本文
で本文出力
という流れの処理を行なっています。
このとき、本文中に、
HTML
1<a href="#"><div>hoge</div></a>
のようにaタグの中にdivが入ることがあります。
TinyMCEでの編集には、
PHP
1function my_tiny_mce_before_init( $init_array ) { 2 global $allowedposttags; 3 4 $init_array['valid_elements'] = '*[*]'; 5 $init_array['extended_valid_elements'] = '*[*]'; 6 $init_array['valid_children'] = '+a[' . implode( '|', array_keys( $allowedposttags ) ) . '],+label[' . implode( '|', array_keys( $allowedposttags ) ) . ']'; 7 $init_array['indent'] = true; 8 $init_array['wpautop'] = false; 9 $init_array['force_p_newlines'] = false; 10 11 return $init_array; 12} 13add_filter( 'tiny_mce_before_init' , 'my_tiny_mce_before_init' );
のように書くと、編集時のルールが変更できますが、これと同様の処理(ルール変更)を、the_contentでも行いたいと思っています。
デフォルトだと、<a>の内側に<div>が許されず、予期せぬ<p>で囲まれてしまうようです。
なお、改行を<br>に変更したり空行で<p>で囲ってくれたり、ショートコードを実行してくれる機能は必要なので、the_contentフィルタは使用したいです。
PHP
1remove_filter('the_content', 'wpautop');
としてしまうと、<br>や<p>を自動で入れてもらえなくなるので、aタグの中にdivが入ることを許容されるようにしたい、という希望です。
環境は、PHP7.1 + WordPress 5.0.3です。
よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/07 10:17
2019/04/07 10:28
2019/04/08 05:31 編集
2019/04/08 05:39
2019/04/10 05:00