プラウザでのソース表示が変?
-
お世話になります。
プラウザでのソース表示が変?なので、質問させて頂きます。
最近気付いたのですが、プラウザでwordpressのサイトのソースを表示してみると、投稿した記事本文の部分のみ、このように表示されてしまいます。
最近までは問題なく、日本語とタグの構成で表視されていたのですが・・・
↓
‘<p>&#12354;&#12394;&#12383;&#12399;&#12289;<span class=”black”>&#12491;&#12461;&#12499;&#12398;&#27096;&#12293;&#12394;&#31278;&#39006;&#12398;&#30149;&#21517;</span>&#12434;&#12372;&#23384;&#30693;&#12391;&#12375;&#12423;&#12358;&#12363;&#65311;&#31169;&#12399;&#12289;&#25968;&#24180; ’
なんか、機械語?みたいな感じです。
ちなみに、他の手持ちのサイトは通常通りこのように表示されるのですが、
↓
<p>定通が藩主であったのは、文化6年(1809年)7月から~天保6年(1835年)6月までの27年間ですが、その頃、松山藩の財政は窮地にあったのでした。その大きな原因となったのは、作物の凶荒の連続です。当時はその発生頻度が多く、松山藩は立ち行かなくなっていたのです。</p>
<p>記録によれば、作物の凶荒は、・・・・・サイトがウィルスかなにかにやられたのか、それとも、
なにかの設定が悪いのか???が、見当がつきません。ただ、サイトの方は、何の問題もなく表示されています。
リンクなどの動きを含めて、問題なしの状態です。もし、原因にお心当たりのあるかたがいらっしゃいましたら、
お知恵をお借りしたいのですが、よろしくお願いいたします。
-
上記への追加説明です。
あくまで、本文部分のみ変換されていて、
タイトルやサイドバーなどの表示は、
きちんと日本語とタグの構成で表示されています。よろしくお願いいたします。
いろいろ調べてみたのですが、原因は、
記事の投稿を表示するとき、
‘<?php the_content(); ?>’の 出力 コード が、
日本語ではなく ’&#12354;&#12394;・・・’のような出力になっていました。
何故でしょうか????
それと、復旧方法は、あるのでしょうか?
どなたか、お詳しい方がいらっしゃいましたら、
よろしくお願いいたします。その後も調べましたら、’&#12354;’のような文字は、「文字実体参照(実体参照)」という、日本語1文字をあらわすコードのようです。
でも、なぜ、これが、実際の日本語に変換されずに、htmlに吐き出されているのでしょうか???
理解不能です。
【重要】 お読みくださいで自問自答しても誰も相手してくれません。
※ 「【重要】 お読みください」はフォーラム管理上のお知らせを掲載するカテゴリーですので質問のトピックには使用されないようお願いします。質問のトピックを作成される際には最もあてはまるカテゴリーを選択してください。本件は「使い方全般」カテゴリーに移動します。
ソースで見た場合に限るだけで、ブラウザ上では当たり前に日本語に変換されているのであれば支障はないのではありませんか。
最近気付いたのですが、プラウザでwordpressのサイトのソースを表示してみると、
ということが最初からそうだったってケースではないでしょうか。
ユニコードにはデータベースでは変換されて格納されるのですから、
MySQLを見なおしてみましょう。MySQL はこんなことはしませんし、実体参照は charset や collation とは別の概念なので、データ入力から保存までの間か、データを表示する部分で PHP が何かをやっています。前者なら、本文検索が一切機能しなくなるので、何らかの対策が必要となります。
タイトルやサイドバーなどの表示は、
きちんと日本語とタグの構成で表示されています。ということなので、データベースにはちゃんと普通の日本語が保存されていて、mb_convert_encoding() のような関数がかかわっている可能性が高いと思いますが、現状では断定できません。
どうにかしたいというのであれば、まったく原因の手がかりがありませんので、何をおいてもすべきなのは、
- プラグインを全て停止して、デフォルトのテーマを使い、表示を確認する。
- 変化がなければ、その状態で新たな投稿を作成してみる。
です。何の変化もない、となったら、本格的な異常なので、次の原因究明が必要になります。なお、WordPress のバージョン、PHP のバージョンといった基本的な情報は、たとえ後で関係がないと分かったとしても、必須です。
みなさんへ、まずは、
よく確認もせず、
異なる、フォーラムへ投稿して、誠に申し訳ございませんでした。それにも関わりませず、高度な、気付きをたくさん頂き、有難うございました。
本当に感謝したします。
stranger-jp 様へ、
申し訳ございませんでした。Takayuki Miyoshi様へ、
申し訳ございませんでした。digit@maetel様へ、
ご返答ありがとうございました。kjmtsh様へ、
さらに高度なご返答を頂き、有難うございました。意味不明な質問に、丁寧にご回答いただき、感謝いたします。
さっそく、そのようにしてみます。
注意点もご指導いただき、有難うございました。
皆さんへ、重ね重ね、ご迷惑をおかけいたしました。
引き続き、対応してみます。
こんにちは
WordPressの管理パネルから入力していますか、ほかの入力ツールを使っていませんか?
nobitaさんへ、はい、他のツールは使っていません。
WordPress のバージョン、PHP のバージョンは、
WordPress 3.8.1
PHP 5.3.3
です。1 プラグインを全て停止して、デフォルトのテーマを使い、表示を確認する。
2 変化がなければ、その状態で新たな投稿を作成してみる。
をやってみても変化なしです。一度wordpress をダウングレードしてみようと思います。
みなさんへ、ダウングレードしようと思い、SQLデータベースのバックアップを取ったついでに、中身を見てみると、きちんと日本語で保存されていました。
つまり、
‘<?php the_content(); ?>’で、コードを吐き出す時のみ、
しかも、page.phpとsingle.phpの時のみ、
‘<?php the_content(); ?>’で吐き出されたコードが、
文字実体参照になっている事が判明しました。そこで、ダウングレードを中止して、
もうすこし、いろいろやってみます。みなさんへ、また、少し進捗がありました。
single.php
のページで、【1】
<?php the_content(); ?>
と
【2】
<?php echo mb_substr(get_the_content(), 0, 30); ?>
を並べてサイトを表示したところ、
【1】は、文字実体参照で表示
【2】は、いつも通りの日本語で表示!
となりました。
これで、確実に、
<?php the_content(); ?>
の動きが犯人であると確定しました。しかし、最近は、いくつかのプラグインは入れましたが、
特に、
<?php the_content(); ?>
に変なフックみたいのがかかる作業はしてないつもりなのですが・・・。どれかのプラグインが、変な動きをして、どこかのコードを書き換えてしまったのでしょうか?
そのせいで、プラグインを全部無効化しても、もとの状態にもどらないのでしょうか??もう一息で、解明しそうな気もしますが・・・立ち往生です。
うーん、
しかも、page.phpとsingle.phpの時のみ、
これが理解できませんねぇ。index.php、archive.php、author.php、category.php、 search.php なら正常ということですよね?
<?php the_content(); ?>
の動きが犯人であると確定しました。index.php でも使われていますので、確定はしていないように見えますが。ちなみに、the_content() は内部で get_the_content() を使い、次にフィルタを適応します。
同じ場所で、
global $wp_filter; print_r($wp_filter['the_content']);
とすると、何か出てきますか?
こんにちは、
<?php $content =<<<CONTENT <p>定通が藩主であったのは、文化6年(1809年)7月から~天保6年(1835年)6月までの27年間ですが、その頃、松山藩の財政は窮地にあったのでした。その大きな原因となったのは、作物の凶荒の連続です。当時はその発生頻度が多く、松山藩は立ち行かなくなっていたのです。</p> CONTENT; echo mb_convert_encoding($content, 'HTML-ENTITIES', 'auto')."\n\n"; ?>
といったコードを使うと、数値参照文字列に変更できます。
このような変換が、どこで行われているか、探せれば解決できると思いますが、テーマの情報がありませんので、推測になりますが、
kjmtshさんがすでに指摘されているとおり、hookによって行われている可能性と、
テーマが、データを最終的に出力するときに使われるエスケープ関数によって、変更されるケースも考えられます。
これらは、hookではないことが普通なので( esc_html($string)とかという使い方 )その当たりも調べてみるといいかもしれないです。
kjmtshさんへ、
またまた、ご指導をいただき、ありがとうございます。
1.
私の使っているテーマでは、
<?php the_content(); ?>
は、single と、page でしか使用しておらず、index.php、archive.php、author.php、category.php、 search.php
では、
<?php the_excerpt(); ?>
で抜粋のみ表示しています。2.
global $wp_filter; print_r($wp_filter['the_content']);
については、
<?php the_excerpt(); ?>
の次の行に、<?php global $wp_filter; print_r($wp_filter['the_content']); ?>
を入れてみたら、
このようなソースコードが吐き出されました。Array ( [1] => Array ( [000000002f37ed00000000005441ab3afilter_user_content] => Array ( [function] => Array ( [0] => ExecPhp_Runtime Object ( [m_cache] => ExecPhp_Cache Object ( [m_option] => ExecPhp_Option Object ( [m_status] => 0 [m_version] => 4.9 [m_widget_support] => 1 ) [m_usermetas] => Array ( ) ) ) [1] => filter_user_content ) [accepted_args] => 1 ) ) [8] => Array ( [000000002f37e57c000000005441ab3arun_shortcode] => Array ( [function] => Array ( [0] => WP_Embed Object ( [handlers] => Array ( [10] => Array ( [googlevideo] => Array ( [regex] => #http://video\.google\.([A-Za-z.]{2,5})/videoplay\?docid=([\d-]+)(.*?)#i [callback] => wp_embed_handler_googlevideo ) ) [9999] => Array ( [audio] => Array ( [regex] => #^https?://.+?\.(mp3|ogg|wma|m4a|wav)$#i [callback] => wp_embed_handler_audio ) [video] => Array ( [regex] => #^https?://.+?\.(mp4|m4v|webm|ogv|wmv|flv)$#i [callback] => wp_embed_handler_video ) ) ) [post_ID] => [usecache] => 1 [linkifunknown] => 1 ) [1] => run_shortcode ) [accepted_args] => 1 ) [000000002f37e57c000000005441ab3aautoembed] => Array ( [function] => Array ( [0] => WP_Embed Object ( [handlers] => Array ( [10] => Array ( [googlevideo] => Array ( [regex] => #http://video\.google\.([A-Za-z.]{2,5})/videoplay\?docid=([\d-]+)(.*?)#i [callback] => wp_embed_handler_googlevideo ) ) [9999] => Array ( [audio] => Array ( [regex] => #^https?://.+?\.(mp3|ogg|wma|m4a|wav)$#i [callback] => wp_embed_handler_audio ) [video] => Array ( [regex] => #^https?://.+?\.(mp4|m4v|webm|ogv|wmv|flv)$#i [callback] => wp_embed_handler_video ) ) ) [post_ID] => [usecache] => 1 [linkifunknown] => 1 ) [1] => autoembed ) [accepted_args] => 1 ) ) [10] => Array ( [wptexturize] => Array ( [function] => wptexturize [accepted_args] => 1 ) [convert_smilies] => Array ( [function] => convert_smilies [accepted_args] => 1 ) [convert_chars] => Array ( [function] => convert_chars [accepted_args] => 1 ) [wpautop] => Array ( [function] => wpautop [accepted_args] => 1 ) [shortcode_unautop] => Array ( [function] => shortcode_unautop [accepted_args] => 1 ) [prepend_attachment] => Array ( [function] => prepend_attachment [accepted_args] => 1 ) [000000002f37e5df000000005441ab3areplace_sitemap_content] => Array ( [function] => Array ( [0] => ps_auto_sitemap Object ( [sitemap_prepared_styles] => Array ( [simple] => Simple [simple2] => Simple2 [checker] => Checker [marker] => Fluorescent marker [document] => Document tree [label] => Label [music] => Music [arrows] => Arrows [business] => Business [index] => Index [urban] => Urban [under_score] => Under score [cube] => Cube ) [option] => Array ( [home_list] => 1 [post_tree] => 1 [page_tree] => 1 [post_id] => [disp_level] => 0 [disp_first] => post [disp_posts] => combine [ex_cat_ids] => [ex_post_ids] => [prepared_style] => [use_cache] => 1 [suppress_link] => ) [wp_version] => 3.8.1 ) [1] => replace_sitemap_content ) [accepted_args] => 1 ) [wordbooker_append_post1] => Array ( [function] => wordbooker_append_post1 [accepted_args] => 1 ) [wp_social_bookmarking_light_the_content] => Array ( [function] => wp_social_bookmarking_light_the_content [accepted_args] => 1 ) ) [11] => Array ( [capital_P_dangit] => Array ( [function] => capital_P_dangit [accepted_args] => 1 ) [do_shortcode] => Array ( [function] => do_shortcode [accepted_args] => 1 ) ) [9998] => Array ( [CMTooltipGlossaryFrontend::cmtt_glossary_createList] => Array ( [function] => Array ( [0] => CMTooltipGlossaryFrontend [1] => cmtt_glossary_createList ) [accepted_args] => 1 ) ) [9999] => Array ( [CMTooltipGlossaryFrontend::cmtt_glossary_parse] => Array ( [function] => Array ( [0] => CMTooltipGlossaryFrontend [1] => cmtt_glossary_parse ) [accepted_args] => 1 ) ) [10000] => Array ( [CMTooltipGlossaryFrontend::cmtt_glossary_addBacklink] => Array ( [function] => Array ( [0] => CMTooltipGlossaryFrontend [1] => cmtt_glossary_addBacklink ) [accepted_args] => 1 ) ) )
いかがなものでしょうか?
- トピック「プラウザでのソース表示が変?」には新たに返信することはできません。