あなたはWordPressで投稿すると一定の文字が、勝手に書き換わってしまう経験はないだろうか。(cv.中村義洋氏)
'なんや' → ‘なんや’ ※apostrophe(')の全角化
"かんや" → “なんか” ※quotation(")の全角化
になってしまい、JavaScriptが書けない!
1-1 → 1–1 ※ハイフン(-)のエンダッシュ(–)化
に変換されてHTMLコメントが出来ない!
おわかり…いただけただろうか…(cv.中村義洋氏)
\キャー!/
原因はちゃんと分離されている
/wp-include/formatting.phpにて、htmlspecialchars変換ではなく、配列で対を指定して文字列置換していた。
『wptexturize』機能として、ちゃんと分離されている。
つまり、設定でどうにでもなるのだ!
対応方法
手っ取り早く、軽量で直すには『設定ファイル(wp-config.php)』か『テンプレートファイル(function.php)』を変更する。
アップデート時もめんどくさくないしね!
プラグインもそこかしこにあるので、使うのもアリ。
ただ正直プラグインは、重くなるので増やさない方が良いです。
classもfunctionも何もなく、書くだけだしね。
/wp-config.phpにて
require_once(ABSPATH . 'wp-settings.php');
より後に下記を追記する。
テーマファイル内function.phpを直すのも一般的。
ただテンプレートがアップデートされたりするので、個人的にはオススメしない。
wp-config.phpなら、自分が変えない限りは変わらないもんね!
場所を指定して機能を停止したい場合
// タイトル欄 remove_filter('the_title', 'wptexturize'); // 本文欄 remove_filter('the_content', 'wptexturize'); // コメント欄 remove_filter('comment_text', 'wptexturize'); // 抜粋欄 remove_filter('the_excerpt', 'wptexturize');
ちなみに>p<タグ変換を停止させる場合
// タイトル欄 remove_filter('the_title', 'wpautop'); // 本文欄 remove_filter('the_content', 'wpautop'); // コメント欄 remove_filter('comment_text', 'wpautop'); // 抜粋欄 remove_filter('the_excerpt', 'wpautop');
変換機能自体を停止させたい場合
機能自体を停止させたいならコレ
add_filter( 'run_wptexturize', '__return_false' );
どうしてもプラグイン使いたい
何か理由があるのだろう? なら使うがいいさ!
wp-content/plugins/以下に『wptexturize_stop.php』を作成。
その内容を下記のようにするだけで作れる。
<?php /* Plugin Name: stop wptexturize Plugin URI: https://qooga.jb-jk.net/wp/wptexturize-stop/ Description: Stop wptexturize! Version: 1.0 Author: QoogaKIKAKU Author URI: https://qooga.jb-jk.net */ /***** ココカラ、上で紹介した内容を設定 *****/ // 下記は場所指定タイプの設定例 remove_filter('the_title', 'wptexturize'); remove_filter('the_content', 'wptexturize'); remove_filter('comment_text','wptexturize'); remove_filter('the_excerpt', 'wptexturize');
あとは管理画面の『プラグイン』から『有効』にするだけ。
でも『wptexturize』機能、じつは使える子!?
『設定ファイル(wp-config.php)』か『テンプレートファイル(function.php)』にて
$wp_cockneyreplace= array( 'ねこ' => '(=^・^=)', 'いぬ' => 'U^ェ^U', );
と書いておくと、どこかで『ねこ』て書いたら『(=^・^=)』に自動的に変換されるようになる。
ショートコードみたいなものである。
上手く使えば、簡易ショートコードみたいで、色々使える。
まぁ、こういうことをする人は、多分ショートコードを使いますよね!
コメント