こんにちは、
remove_filter('the_content', 'wpautop');
でフィルタが外せていないんだと思います。
なんでか?
wpautopは、コアでフィルタが追加されている場合以外でも、add_filter()されていることが
あったりしますし、
remove_filterの第三引数 priorityの値が、add_filter()の時のpriorityと異なっていたりすると除去できなかったりします。
じゃ、どうすればいいのか
今書いている、remove_filter('the_content', 'wpautop');
はコメントアウトして、
私の、自家製のなんちゃってスクリプトと一緒にfunctions.phpに貼り付けてください
(このスクリプトは、the_contentにフックしているフィルタをリスト表示します)
functions.phpの最初の行(<?php
の前に)
<?php
//remove_filter('the_content','wpautop');
function list_hooked_functions($tag=false){
global $wp_filter;
if ($tag) {
$hook[$tag]=$wp_filter[$tag];
if (!is_array($hook[$tag]) ) {
echo "<p>Nothing found for '$tag' hook</p>";
trigger_error("Nothing found for '$tag' hook", E_USER_WARNING);
return;
}
} else {
$hook=$wp_filter;
ksort($hook);
}
echo '<div style="text-align:left;margin:5%;">';
foreach($hook as $tag=> $priority){
echo "<p><strong>$tag</strong></p>";
ksort($priority);
foreach($priority as $priority=> $function){
echo '<p>'.$priority.' ';
foreach($function as $name=> $properties) echo "\t$name</p>";
}
}
echo '</div>';
return;
}
list_hooked_functions('the_content');
?>
表示されたリストに wpautopがあることを確認したら
最初の行の、remove_filterのコメントアウトを外してください
で、もう一度リストに、wpautopがあるかどうか探して、
12 wpautop
みたいなのがあったら、
remove_filter('the_content','wpautop',12);
をさらに追加して、なくなったら たぶんOK
remove_filter以外のコードを削除してください
対応としては、TinyMCE Advancedを使用しているのでのOPTIONのStop removing the <p> and
tags when saving and show them in the Text editorにチェックをいれています。確認ですがこれは不要な <p> タグと
タグを削除する機能を止めるためですよね?
ちょっと使ってないのでよくわかりません。プラグインを外してテストしてみてください
対応としては、TinyMCE Advancedを使用しているのでのOPTIONのStop removing the <p> and
tags when saving and show them in the Text editorにチェックをいれています。確認ですがこれは不要な <p> タグと
タグを削除する機能を止めるためですよね?
使っていないので知りませんが、訳すと’削除するのを止める’となりますから、チェックを外すといいんじゃないでしょうか。
the_content
8 0000000050d01fc30000000028fffbe9run_shortcode
0000000050d01fc30000000028fffbe9autoembed
10 wptexturize
convert_smilies
convert_chars
wpautop
shortcode_unautop
prepend_attachment
11 capital_P_dangit
do_shortcode
リスト表示した結果、このようになりました。
12 wpautopはありませんでした。
あと、TinyMCE AdvancedのOPTIONのチェックを外しました。
ところが、これを外すと新規投稿時、ビジュアルモードで文字を書いていくと
今まではPタグで囲われていたものがなくなりました。
これでは困ってしまいます。
コピペでモード切替してもソースが変わらず、なおかつ新規投稿のときビジュアルモードでは自動的にPが入ってほしいのです。
よろしくお願いいたします。
12というのは、プライオリティの例なので
wpautop というのはあるので、removeできていないんですね。
そういう時には、ほかのアクションフックと組み合わせて実行すると上手くいったりすることもあるんですが、こちらでは、removeできてしまうので、環境を再現できないので、何とも言えないです。
コピペでモード切替してもソースが変わらず、なおかつ新規投稿のときビジュアルモードでは自動的にPが入ってほしいのです。
これは、無理です。
ビジュアルモードは、文字を入力して、要素を書き足すというのが基本なので、ちょっとしたhtmlを読み込むとhtmlを壊してしまいます。
ローカルに、htmlエディタを用意しておいて、テキストモードで貼り付けたほうがいいと思います
わかりました。
丁寧なご返答ありがとうございました。
こういう時って、エンドユーザーにはどういった説明をすれば良いですかね?
基本的にはビジュアルモードで書いてるみたいなので切替はしないとか、コピペでソースを張り付けないとかですかね??
まあその辺は考えます。
複数人で更新していくのはWPの場合大変ですね(汗
また質問したときはよろしくお願いいたします。