8月 182010
以前、「投稿のタイトルをMT風にアレンジするプラグイン」によってひきおこされた「タグの重複問題」の続報、というか、解決した。
タグの重複問題はすべてプラグインのソースコードに書かれていた
<?php
/*
* Plugin Name: MT Style Post Name
* Description: タイトルから英数字、ダッシュ、アンダーバーのみ抜き取ってスラッグに。日本語しか使われてないエントリはPost_IDを使う。
* Author: 449
* Plugin URI: http://pc10.2ch.net/test/read.cgi/blog/1163599919
* Version: 0.1
*
*/
add_filter('sanitize_title','sanitize_title_numalpha_only',9);
function sanitize_title_numalpha_only($title) {
return preg_replace('/[^%a-zA-Z0-9 ¥(¥)_-]/', '-', $title);
}?>
【sanitize_title】
というフィルターに原因があったのだった。
この「sanitize_title」というのは、記事のタイトルをスラッグとして使えるように2バイト文字をURLエンコードしたり、アルファベットをすべて小文字にするなど”サニタイズ(変更)”するのだけれども、これが悪さをしているようだ。
add_filterは、はじめの引数がフィルターのトリガーになって2番目の引数にある関数を実行するという関数で、この例で行くと「sanitize_title」というのは「記事タイトル」をサニタイズするタイミングがトリガーになって関数を実行する。
しかし、今のWordpressではどうやら、「sanitize_title」はタグの処理にも関わっているらしく、そのタグの処理の際に数字とアルファベット以外を取り除くので日本語があっていてもスラッグはIDになってしまい、別のスラッグとして扱うためタグの重複がおこってしまうのだった。
というわけで、もうめんどくさいので日本語そのままで行くことにしたのだった。なにげに最近のトレンドはそのままみたいで。Amazonとかもそうだし。
ツイートRelated posts: