Wordpressでエントリーを入力する際には、WYSWYGモードとHTMLモードがあります。
前者はともかく、後者はその名にもかかわらず、書いた通りそのままHTMLを出してくれるわけではありません。
タグに囲まれていない部分について、改行にbrがつけられ、さらにpタグで括られて段落化されます。
通常は問題にならないところですが、「HTMLにコメントを残したい」という場合に困りました。コメント部分が、実質からっぽの段落、場合によっては改行だけが入った段落という風に表示されてしまいます。

Javascriptで段落化したコメントをブロックごと消す

どうしてもコメントを残さなければならない…ということで、苦肉の策で思いついたのがこれです。

$(".content p").each(function(){
if($(this).html().indexOf("<!--")!=-1) {
$(this).remove();
}
});

非常に単純な話で、表示する際の処理として、エントリー中のpタグの中にコメント開始タグがあったら、Javascriptで、そのpタグごと消してしまうという。

ブロックごとコメントアウトしたい

じゃあ、「コメントを入れるんじゃなくて、ブロックごとコメントアウトしたい」という時はどうするか…。
普通にブロックごとコメントアウトしても思ったようにはなりません。
「コメント中にHTMLタグを書けない」という仕様だそうです。
その場合は、消したいブロックにdisplay:noneと設定したクラスをつけてやる…くらいしか思いつきませんでした。

.hidden {
display: none;
}

とした上で、


ちなみに、改行を変換しないようにするプラグインもありますが、WYSWYGエディタの改行までスポイルされてしまうので、自分以外の方が使うものについては、なかなか使うのは難しそうです。

できない以上、Wordpressの思想的に「イレギュラーなことすんな」ということなんだと思いますが、皆さんどうしてるんでしょう。


タグ:Wordpress jquery