44349

[code]

    add_shortcode('pre', function($attr, $content = null) {
      return '<pre><code>' . $content . '</code></pre>';
    });
    
[/code]

WordPressのショートコード機能を使って、`pre`
タグでシングルクォーテーションを2回入力してみたところ、ダブルクォーテーションに変換されてしまいました。

[code]

    [pre]''[/pre]
    
[/code]

投稿画面では、シングルクオーテーション2つなのに、実際に表示されるのは `”` です。どうすればこの変換を防ぐことができますか？


CC BY-SA 4.0
2018-05-28T14:55:24.443
44339
2018-05-29T02:47:45.737
19687
question
php wordpress
WordPressのショートコードで文字が変換されてしまう


wordpressの`wptexturize`で変換されています。[http://wpdocs.osdn.jp/関数リファレンス/wptexturize](http://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wptexturize)

タグcode、preでは変換されないはずなのですが wordpressバージョン 4.9.6で確認したところ  
変換されてしまったので 次のフィルータをfunctions.phpへ追加すると`wptexturize`を止めることが出来ます。

[code]

    add_filter( 'run_wptexturize', '__return_false' );
    
[/code]

指定したショートコードの時だけ`wptexturize`を止める時

[code]

    add_filter( 'no_texturize_shortcodes', 'shortcodes_to_exempt_from_wptexturize' );
    function shortcodes_to_exempt_from_wptexturize( $shortcodes ) {
        $shortcodes[] = 'pre';
        return $shortcodes;
    }
    
[/code]


CC BY-SA 4.0
2018-05-29T02:37:14.737
44349
2018-05-29T02:47:45.737
2018-05-29T02:47:45.737
22793
22793
44339
answer