こんにちは、
デフォルトの状態だと、投稿本文に記述した <!--my comment-->
がフィルタされて、非表示になるものを、ソースに表示できるようにしたいという事でいいですか?
それでいいとすると、
add_filter('the_content', 'comment_custom_before', 5 );
function comment_custom_before( $content ) {
return str_replace( array( '<!--', '-->' ), array( '%%', '%' ), $content );
}
add_filter( 'the_content', 'comment_custom_after', 99 );
function comment_custom_after( $content ) {
return str_replace( array( '%%', '%' ), array( '<!--', '-->' ), $content );
}
ワードプレスのフィルタが動作する前に、「これコメントじゃないですから、、」と文字列置換をして、フィルタの動作が終わったころに、「やっぱりコメントでしたーー」という
ごまかし処理をするといいと思います。
コメントがpでラップされるのは、なんか処理してください。
ご回答ありがとうございます。
公開した際に、
<p><!– コメント –></p>
こんな風にコメントタグがPタグで囲われてしまいます。
こうなってしまうのを防げないかということをお伺いしたかったのです。
自動整形を無効にすればこうはならないのですが、こう書くべきでした、すみません。
ですので、回答の最後に書かれてあった、
「コメントがpでラップされるのは、なんか処理してください。」
まさにこれをできないのだろうかということを知りたかったのです。
手抜きですみませんが
以下のようにすれば、ラップされないんじゃないかと思います。
<div>
等のブロック要素は、pでラップされないので、WordPressをだましちゃう
という事をやっています。
<div>%%
%</div>
が投稿に存在する可能性がある場合は、別の文字に変更してください
add_filter('the_content', 'comment_custom_before', 5 );
function comment_custom_before( $content ) {
return str_replace( array( '<!--', '-->' ), array( '<div>%%', '%</div>' ), $content );
}
add_filter( 'the_content', 'comment_custom_after', 99 );
function comment_custom_after( $content ) {
return str_replace( array( '<div>%%', '%</div>' ), array( '<!--', '-->' ), $content );
}
うまくいきましたです!ありがとうございます。
SEO的にも問題はなさそうなのですが、
WordPressをどのようにだましているのだろうという疑問。
「<!–」を「<div>」だと思え、みたいなことなのでしょうか。
でもソースを見たら、普通に「<!–コメント–!>」と出ているだけ…
一体何が起こっているのだろう…
それはさておき、重ね重ねありがとうございました!