最初に言っておきますが、コピペです。作者の方にはまだ許可を取っていません連絡しました。。私が書いたコードではありませんです。
私も困っていたんです。半角英数が日本語の中に突然挿入されると、見にくいと思いませんか。私は改行位置云々よりも見にくくって仕方がありませんでした。で、半角英数が間に挟まる場合に自分で半角スペースを挿入していました。これめんどくさいんですよね。つい忘れるし。
ということで、つらつらと Web を徘徊していたら見つけてしまいました。まさにこれです。これ! ということで、早速コピペしましたよ。
WordPress にて日本語文中で半角英数字の使用するとき前後に狭いスペース を自動で挿入し文字間隔(字送り)を調節する関数をつくりました。変な位置での改行がなくなるし、半角英数字の前後に少し間が開くので文章も読みやすくなります。
WordPress にて日本語と半角英数字の間に狭いスペースを自動で挿入する : トイレのうず/ブログ
これです。丁寧な説明がリンク先にありますので、それを参照していただければ OK です。しかし、同じような悩みがある場合、あちこちリンクをたどるのも何ですので、コードはこっちにも書いておきますね。
<pre class="wp-block-syntaxhighlighter-code">function add_space_full_width_half_width( $content ){
//<pre>タグで分割
$content_arr = preg_split('/(<pre\s*(?:"[^"]*"|\'[^\']*\'|[^\'">])*>.*?<\/pre>)/is', $content, -1, PREG_SPLIT_DELIM_CAPTURE);
$content = '';
foreach($content_arr as &$value){
if(strpos($value,'<pre') === false){
//<>[]"'改行を除く半角英数字と隣り合ってるとき狭いスペースを挿入、タグの接するときはタグを覗いたパターンで判断
$content .= preg_replace( array( '/(?<![!-~\s]|^)((?:<("[^"]*"|\'[^\']*\'|[^\'">])*>)*)(?=[!#-&(-;=-Z\\\-~])/', '/(?<=[!#-&(-=?-\\\^-~])((?:<\/[a-zA-Z0-9]+>)*)(?![!-~\s]|$)/', '/(?<![!-~\s]) +(?=[!-~])/', '/(?<=[!-~]) +(?![!-~\s])/' ) , array( ' $1', '$1 ', ' ', ' ' ) , $value );
} else {
$content .= $value;
}
}
return $content;
}
add_filter( 'the_content', 'add_space_full_width_half_width', 5);
add_filter( 'comment_text' , 'add_space_full_width_half_width', 5 );
add_filter( 'the_title' , 'add_space_full_width_half_width', 5 );</pre>
内容については検証したり解析したりしていません。ホントコピペです(滝汗
テーマの関数ですね。 Function.php ファイルの末尾に貼り付けました。すごいですね。ちゃんと動作します。
さて、作者さんにお礼とブログ転載のお礼をしなければ …
私は木の立つ姿が好きです。なぜなら木々は自分たちの生きねばならぬ道に、ほかのものよりずっと素直に従っているからです。
ウィラ・キャザー
投稿者プロフィール
最新の投稿
- Tech2024年11月28日ChromeOS flex を古いノートにインストール
- Linux2024年11月16日Ubuntu で外付け SSD の容量が違って見える
- Linux2024年11月13日Windows インストールできず。 Ubuntu に変更
- Windows2024年11月8日Windows11 起動せず