WordPress.org

日本語

サポート

サポート » バグ報告と提案 » WordPressで濁点ありの日本語ファイルをsafariでも表示でされない。

WordPressで濁点ありの日本語ファイルをsafariでも表示でされない。

  • miya

    @linkstory

    WordPressのメディアにPDFをアップした時に濁点のついた日本語ファイルのみ、safariで表示されない状況です。
    ごくまれに濁点がついていても表示されることはあります。

    ファイル名に日本語を使うのは極力避けた方がいいとは思いますが、今回は日本語で管理しなければならなく、
    使用していました。2016年の9月から10月前後までは、問題なく日本語でも濁音ありでもすべてのブラウザーで表示されていました。

    現状は対策として、safari用に先にFTPでアップし、chromeなど用にメディアからファイルを投稿すると表示されるので、その応急処置で行っています。(先にsafari用のPDFをFTPで上げておけばsafariには表示されますが、chromeでは表示されないので同じファイルをメディアにもあげています)

    その状況ですので、サーバー上には常に2つファイルがアップされています。(ファイルは全く一緒ですが上書きされず2つに分かれます)

    <情報>
    ・wordpress バージョン4.7(4.6.1でも同様の状況)
    ・WP Multibyte Patchは有効済み 
     →$wpmp_conf[‘patch_sanitize_file_name’] = false; trueからfalseに変更
    ・chrome、IE、firefoxは表示OK

4件の返信を表示中 - 16 - 19件目 (全19件中)
  • 訂正

    
    add_filter( 'media_send_to_editor', 'raindrops_pdf_send_to_editor', 10, 3 );
    
    function raindrops_pdf_send_to_editor( $html, $attachment_id, $attachment ) {
    
    		$post = get_post( $attachment_id );
    
    		if ( substr( $post->post_mime_type, 0, 15 ) == 'application/pdf' ) {//ファイルがPDFの場合
    			
    			$check_encoded = get_url_in_content( $html );//URLを取得して
    			
    			if( mb_strlen( $check_encoded ) !== strlen( $check_encoded ) && ! preg_match('!%[0-9A-Z][0-9A-Z]+!', $check_encoded ) ) {
    			//mb_strlen( $check_encoded ) !== strlen( $check_encoded )は、日本語を簡易判定
    			//preg_match('!%[0-9A-Z][0-9A-Z]+!', $check_encoded ) 既にエンコードされていないかを確認
    	
    				$encoded_url = esc_url( $check_encoded );				
    				$html = str_replace( $check_encoded, $encoded_url, $html );//URLを置換
                                    
    			}
                        return $html;		
    		}
    		return $html;
    }
    

    二重エンコード

    http://qiita.com/khsk/items/3440ba4f363893434ee4

    nobita様

    ありがとうございます!!
    できました!

    safariのみなのでどうしていいかわからず、このところ1ヶ月くらいずっと悩んでいたので本当に助かりました。
    前回いただいた対策なども、今後勉強して導入していきます。

    nobita様

    1点ご相談なのですが、

    add_filter( 'media_send_to_editor', 'raindrops_pdf_send_to_editor', 10, 3 );

    の部分の、
    raindrops_pdf_send_to_editor

    部分はこちらのwordressのテーマのfuncitionにこのまま記入しても問題ないのでしょうか?
    書き換えたほうがよろしいでしょうか?

    何から何まで質問してしまい申し訳ございませんが、よろしくお願い致します。

    dd_filter( 'media_send_to_editor', 'test_pdf_send_to_editor', 10, 3 );
    
    function test_pdf_send_to_editor( $html, $attachment_id, $attachment ) 

    と各自2箇所変更するということですね。
    大変失礼しました。

4件の返信を表示中 - 16 - 19件目 (全19件中)
  • このトピックに返信するにはログインが必要です。