• 解決済 massaa

    (@massaa)


    質問させてください。

    記事の更新に関してです。
    ローカルで記事を作成後、コピペで管理画面にもっていって保存すると
    スペース等でかってに
    や<p>が入ってしまいます。
    あとコメントアウト部分にもPが勝手に入ってました。

    対応としては、TinyMCE Advancedを使用しているのでのOPTIONのStop removing the <p> and
    tags when saving and show them in the Text editorにチェックをいれています。確認ですがこれは不要な <p> タグと
    タグを削除する機能を止めるためですよね?

    あとは、function.phpに`//p,brタグ削除
    remove_filter(‘the_content’, ‘wpautop’);`

    これはいれています。

    問題点は
    1、ソースのコピペで保存後に勝手にPやbrタグが入るのをやめたい(テキストモード)
    2、テキストモードでpタグ等を削除し綺麗にしたのに、ビジュアルモードで確認後テキストモードにもどるとまたpタグやbrタグが入っているのやめたい。
    3、コメント部分にもPが入っていたのでこれもやめたい。

    画面モードを切り替えようが、保存しようが、コピーしたものがそのまま反映できるには何が最適なのでしょうか?

    ご存知の方がいらっしゃたらお教えくださいませ。
    よろしくお願いいたします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • こんにちは、

    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> タグと
    タグを削除する機能を止めるためですよね?

    使っていないので知りませんが、訳すと’削除するのを止める’となりますから、チェックを外すといいんじゃないでしょうか。

    トピック投稿者 massaa

    (@massaa)

    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エディタを用意しておいて、テキストモードで貼り付けたほうがいいと思います

    トピック投稿者 massaa

    (@massaa)

    わかりました。
    丁寧なご返答ありがとうございました。

    こういう時って、エンドユーザーにはどういった説明をすれば良いですかね?
    基本的にはビジュアルモードで書いてるみたいなので切替はしないとか、コピペでソースを張り付けないとかですかね??
    まあその辺は考えます。

    複数人で更新していくのはWPの場合大変ですね(汗

    また質問したときはよろしくお願いいたします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「やっぱり勝手にbr、pが入る」には新たに返信することはできません。