こんにちは。
WordPress自体をカスタマイズしても良いのであれば
こちらが参考になるかと思います
http://kanari.info/b/247.html
が、
<p class=”xxx”>タイトル</p>
ではなく
<span class=”xxx”>タイトル</span>
と入力してもいいかと思います。
nebura様
早速のご回答ありがとうございました。
教えていただいた情報、役に立ちそうです。
これを参考に修正したいと思います。
ありがとうございました。
nebura様
コメントにしてみたのですが動作は変わりませんでした。
default-filters.php
add_filter(‘the_content’, ‘wptexturize’);
add_filter(‘the_content’, ‘convert_smilies’);
add_filter(‘the_content’, ‘convert_chars’);
// add_filter(‘the_content’, ‘wpautop’);
add_filter(‘the_content’, ‘prepend_attachment’);
単純にコメントにしたのですが、やり方がまずいのでしょうか。
ちなみにsingle.php側の投稿者タグの定義は
<?php the_content(‘<p class=”serif”>’ . __(‘Read the rest of this entry »’, ‘kubrick’) . ‘</p>’); ?>
です。
<?php the_content( __(‘Read the rest of this entry »’, ‘kubrick’) ); ?>
でも同じでした。
せっかく教えていただいたのですが
当然だとは思うのですがたとえば本文中に
<p class=”xxx”>タイトル</p>と入力すると
<p><p class=”xxx”>タイトル</p></p> となってしまい
「W3C(World Wide Web Consortium:HTMLの文法のルール)」
から見るとエラーになってしまいます。
通常ですと HTML エディタ (あるいは TinyMCE の xhtmlxtras プラグインなど) で p 要素に class などを付与した場合、 wpautop() では見出しや他のブロックレベル要素と同じように重複したマークアップはしないはずです。例えばビジュアルエディタで行揃えした場合も p 要素がネストするマークアップになっている場合、本体ではなく他に原因を探った方が良さそうです。
例えば Contact Form 7 のように、独自の autop() を用意しているプラグインを使用していませんか?
(ちなみに Contact Form 7 の autop() にはそのような問題はありません)
それからこれは本題と関係ありませんが、任意のフィルタを解除したい場合、本体の add_filter() をコメントアウトするのではなく、テーマやプラグインにて remove_filter() を使用した方が良いと思います。
当然だとは思うのですがたとえば本文中に
<p class="xxx">タイトル</p>と入力すると
<p><p class="xxx">タイトル</p></p> となってしまい
そんなことはありませんが。
本文をきちんと p で段落分けしてマークアップすれば、全体を p で包むようなマークアップにはなりません。
もしそうなるとしたら、テーマの方で、the_content()
の外側に p 要素を入れてたりしませんか?
mizube様 lilyfan様 貴重なご意見ありがとうございました。
プラグインを多数使用していましたので、一つずつ確認すると
「brBrbr」のプラグインを停止すると<p>タグの現象がなくなりました。
「brBrbr」プラグインは勝手に改行してくれるプラグインなのですが・・・
悲しいことに原稿の内容が「brBrbr」プラグインに依存しているため
停止するとすごく見難くなるのです。 400ページあるのですが・・・
しかし、原因が見つかりました。 ありがとうございます。
次の手を探してみます。
「brBrbr」プラグインを作成された作者の方には悪いのですが
プラグインの中身をさわって動作を確認してみました。
function brBrbr($brbr) {
$brbr = str_replace(array(“\r\n”, “\r”), “\n”, $brbr); // cross-platform newlines
$brbr = str_replace(“\n”, “\n”, $brbr); // cross-platform newlines
$brbr = preg_replace(‘!(</?(?:table|img|thead|tfoot|caption|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|textarea|input|blockquote|address|p|math|p|script|h[1-6])[^>]*>)\s*!’, “$1”, $brbr);
$brbr = preg_replace(‘|<blockquote([^>]*)>|i’, “</p>\n<blockquote$1><p>”, $brbr);
$brbr = str_replace(‘
‘, “</p>\n<p>”, $brbr);
$brbr = preg_replace(‘/(<script.*?>)(.*?)<\/script>/ise’, “clr_br(‘$0’)”, $brbr);
$brbr = preg_replace(‘/(<form.*?>)(.*?)<\/form>/ise’, “clr_br(‘$0’)”, $brbr);
// $brbr=”<p>\n”.$brbr.”</p>\n”; <—- ここです。
return $brbr;
}
下から3行目の
$brbr=”<p>\n”.$brbr.”</p>\n”;
をコメントにしたら問題は解決したのですが、どうでしょうか。
ご意見がございましたらお願いします。
「brBrbr」プラグインは勝手に改行してくれるプラグインなのですが・・・
これは意味違いますよね・・・
正確にはxhtmlの文法違反を無視して<br />
タグを複数入力できるようにするプラグインだと思うのですが。
改行を入れたければShift+Enterで入りますし、普通にEnter押せば段落として<p>
タグを追加してくれますし、そんなにwordpressのソース自動修正が気に入らないものなのでしょうか。
入力方法に慣れればたいしたことはないと思いますけど;)
ご指摘ありがとうございました。
とりあえず、brBRbrのプラグインの変更して様子を見ようと思います。
本来の修正では無いと思いますので、再度調査してみます。
ありがとうございました。