サポート » 使い方全般 » firefoxで投稿した時にだけ、おかしな文章が表示される

  • 普段はfirefoxを使用しているのですが、
    記事を投稿してみたところ、以下のような表示が出てきました。

    Normal
    0

    0
    2

    false
    false
    false

    EN-US
    JA
    X-NONE

    /* Style Definitions */
    table.MsoNormalTable
    {mso-style-name:標準の表;
    mso-tstyle-rowband-size:0;
    mso-tstyle-colband-size:0;
    mso-style-noshow:yes;
    mso-style-priority:99;
    mso-style-parent:””;
    mso-padding-alt:0mm 5.4pt 0mm 5.4pt;
    mso-para-margin:0mm;
    mso-para-margin-bottom:.0001pt;
    mso-pagination:widow-orphan;
    font-size:10.5pt;
    mso-bidi-font-size:11.0pt;
    font-family:”Century”,”serif”;
    mso-ascii-font-family:Century;
    mso-ascii-theme-font:minor-latin;
    mso-hansi-font-family:Century;
    mso-hansi-theme-font:minor-latin;
    mso-font-kerning:1.0pt;}

    詳しく言うと、記事の先頭に
    上記の文章が追加されていた、という感じです。

    この表示がなぜ出てきたのか全く分かりません。
    他のブラウザで投稿してみたところ、
    特には表示されませんでした。

    また、プラグインを停止したり、functions.phpを削除したり、
    ということもやってみたのですが、
    firefoxでの投稿のときだけは、上記の文章が表示されていました。

    原因も不明で、どうしてよいかわからないのですが、
    このような表示の理由や対応の方法などを
    どう調べてよいかもわからず、困っています。

    他のブラウザを使うべき、という意見もあるかもしれませんが、
    firefoxだけでこの表示が出るのは不思議ですし、
    私としては、出来る限りfirefoxを使用していきたいと考えていますので、
    質問をさせていただきました。

    お手数かとは思いますが、
    もし、なにか分かるかたがいらっしゃいましたら、ぜひご意見などを
    いただきたいです。

    長い文章で申し訳ないと思いますが、
    ご意見の程、お願いします。

8件の返信を表示中 - 16 - 23件目 (全23件中)
  • あ、すいません
    もう最初の質問の文字列は表示されていないんですね!
    その解決策を考えていました。

    今のところエディタには謎の文字列は表示されるものの、投稿したらサイトの記事そのものにはとくにおかしな様子はない、ということでよろしいでしょうか?

    すいません
    こちらが上手く伝えられていなかったです。

    最初の質問の文字列は公開した時に、投稿に追加されて、
    サイト上に表示されています。

    記事を貼り付けた時は問題ないのですが、
    実際に公開した後に記事を見てみると、
    謎の文字列が追加されているという感じです。

    そのため、投稿した時に、サイトの記事そのものに
    最初の文字列が表示されている、という感じです。

    サンプルのコードを貼りますが、このコードは記事の保存時に投稿内容を整形するので文字装飾が削除されたり、必要なタグまで消されてしまう可能性があるので気をつけてください。

    上のほうで書いてあったテキストエディタに切り替えた時に表示された謎の文字列から本文に関わる部分以外を削除します。

    function post_mso_fix($postID) {
    	global $wpdb;
    	$content = $wpdb -> get_var("SELECT post_content FROM {$wpdb->posts} WHERE ID = '{$postID}' LIMIT 1");
    	$content = preg_replace("/\sstyle=\".*?\"|<!--\[if\sgte.*?endif\]-->|<style>.*?<\/style>|<p>\s<\/p>/s", "", $content);
    	$wpdb -> query("UPDATE {$wpdb->posts} SET post_content = '{$content}' WHERE ID = '{$postID}'");
    	return $postID;
    }
    
    add_action('save_post', 'post_mso_fix');
    add_action('edit_post', 'post_mso_fix');
    add_action('publish_post', 'post_mso_fix');

    記事を保存した段階で整形されるので投稿したら謎の文字列がでるということはなくなると思うんですが・・・。

    このコードでやってることは<!–[if gte mso ●]>から<![endif]–>で囲まれた部分とspanタグなどについたstyle属性、不必要な空白文字を削除します。
    spanタグやpタグ、見出しなどは残るはずです。

    削除のタイミングは保存時なので貼り付けてすぐは謎の文字列はでてきます。

    なぜfirefoxでそうなるのかって部分は全然解決してないですけどね(´-ω-`)

    上記のコードを貼り付けてみましたが、やはりダメでした。
    貼り付けた時には問題が特にないのですが、
    公開を実際にすると、変な文章が勝手に追加され、表示されてしまっています。

    paruchanさんが作成して下さっているように、
    コードで対応のが理想だと考えているので
    tinymceで素直にwordの貼り付けをお世話になる方法もあるのかもしれませんが、
    もう少し対策を調べてみたいと思います。

    うーん。ダメでしたか。
    保存するタイミングより先に書き換えが起こってるみたいですね。

    function mso_fix_content($content) {
    	$content = preg_replace("/Normal.*;}/s", "", $content);
    	return $content;
    }
    add_filter('the_content', 'mso_fix_content');

    このコードは最初の質問ででていた変な文章の最初にある『Normal』という単語から最後にある『;}』という記号までを表示させないというコードになっています。
    記事にそのままNormal 0 0 なんとかかんとかと書かれてるのであればこれで表示されなくなるはずなんですよね・・・。

    記事を貼り付け→公開したら変な文章が表示されるのはわかったのですが、
    その公開した記事ををもう一度テキストエディタで開いたらどうなっていますか?
    上のほうの書き込みにあった「お試しで貼り付け」のときのような大量の文字が入ってるでしょうか?
    それとも公開したときに勝手についてくる変な文章だけでしょうか?

    上記のコードを貼りつけたところ、
    公開ボタンを押した後の投稿画面の記事には、「変な文章」が
    記載されていましたが、
    サイト上の表示では、「変な文章」が見えない状態になっていました。
    記事にそのままNormal 0 0 なんとかと書かれているので、
    実際に表示されなくなりました。

    公開した記事をテキストエディタで開いたら、
    以下のようになっていました。
    (wordで「お試し」と記述したものをコピーして貼り付けて、
     投稿した後の、テキストエディタの内容を全て以下に記述しました。)

    <!--[if gte mso 9]>-->
    
    Normal
    0
    
    0
    2
    
    false
    false
    false
    
    EN-US
    JA
    X-NONE
    
    <!--[if gte mso 9]>-->
    
    <!--[if gte mso 10]>-->
    
    /* Style Definitions */
    table.MsoNormalTable
    {mso-style-name:標準の表;
    mso-tstyle-rowband-size:0;
    mso-tstyle-colband-size:0;
    mso-style-noshow:yes;
    mso-style-priority:99;
    mso-style-parent:"";
    mso-padding-alt:0mm 5.4pt 0mm 5.4pt;
    mso-para-margin:0mm;
    mso-para-margin-bottom:.0001pt;
    mso-pagination:widow-orphan;
    font-size:10.5pt;
    mso-bidi-font-size:11.0pt;
    font-family:"Century","serif";
    mso-ascii-font-family:Century;
    mso-ascii-theme-font:minor-latin;
    mso-hansi-font-family:Century;
    mso-hansi-theme-font:minor-latin;
    mso-font-kerning:1.0pt;}
    <p class="MsoNormal"><span style="font-family: 'MS 明朝','serif';">お試し</span></p>

    投稿画面での記事にはどうしても記載されてしまうようです。

    投稿画面での記事にはどうしても記載されてしまうようです。

    先にかいたコードは表示されないようにするためのコードですので挙動としてはそれでOKです。

    function post_mso_fix($postID) {
    	global $wpdb;
    	$content = $wpdb -> get_var("SELECT post_content FROM {$wpdb->posts} WHERE ID = '{$postID}' LIMIT 1");
    	if (preg_match("/\[endif\]/s", $content)) {
    		$content = preg_replace("/\sstyle=\".*?\"|<!--\[if\sgte\smso.*?endif\]-->|<p>\s<\/p>/s", "", $content);
    		$wpdb -> query("UPDATE {$wpdb->posts} SET post_content = '{$content}' WHERE ID = '{$postID}'");
    		return $postID;
    	} elseif (preg_match("/if\sgte\smso/s", $content)) {
    		$content = preg_replace("/\sstyle=\".*?\"|<!--\[if gte mso 9\]>-->.*?<!--\[if gte mso 9\]>-->|<!--\[if gte mso 10\]>-->|\/\*.*?;}/s", "", $content);
    		$wpdb -> query("UPDATE {$wpdb->posts} SET post_content = '{$content}' WHERE ID = '{$postID}'");
    		return $postID;
    	}
    
    }
    
    add_action('save_post', 'post_mso_fix');
    add_action('edit_post', 'post_mso_fix');
    add_action('publish_post', 'post_mso_fix');

    記事から不要箇所を削除するコードです。保存時に機能します。
    不要箇所が毎回同じパターンであるとは限らないので万能ではないです。
    ワードプレスのコードで対応するのはこのへんが限界かと思います。

    上記のコードを貼り付けてみたところ、
    記事から謎の文章の部分は削除されませんでした。
    万能ではない、ということでしたので、
    何度かためしてみましたが、やはり同じ結果でした。

    私も引き続き調べていますが、
    ワードプレスのコードで対応するのは、
    paruchanさんが書いてくださっているコード
    くらいまで対応できれば、と考えており、
    また、そのようなコードも見つけられていない、
    という状況です。

8件の返信を表示中 - 16 - 23件目 (全23件中)
  • トピック「firefoxで投稿した時にだけ、おかしな文章が表示される」には新たに返信することはできません。