WordPress (ワードプ ..
[2ch|▼Menu]
256:Trackback(774)
08/11/10 17:19:58 JfFrQi92
>>255
ごめんわかりにくかったですね。

うちのxrefは251がベースだからちょっと古いんだけど、
/wp-includes/ -> formatting.php (source)
このファイルに
343 function sanitize_title_with_dashes($title) {
この関数の定義部があるのね。
251だと古いせいか、
357 $title = utf8_uri_encode($title, 200);
って感じで、200文字目までしかサニタイズしようとしないのね。
ほんで、データベースの定義部を拡張下と思うんだけど、ちょうどうちも255にしたから、
>>252の >name  varchar(255) ←この数字増やしたらいけますた。
ってのが、前か後か知らないけど、255にするときには内部で代入すべき文字列を作成してるところも
ちゃんと255文字作ってあげましょう、ってことなの。

さっきの関数を丸々もらって、
ほんの一部を、
$title = utf8_uri_encode($title, 255);
に書き換えてあげて、関数名を自分のもので定義。

そのあと
remove_filter('sanitize_title', 'sanitize_title_with_dashes');
add_filter('sanitize_title', 'sanitize_title_with_dashes_nico');
って具合にフィルタをかけなおしてあげると、ちゃんと255文字入れてくれますよ〜、ってお話です。
こうしておくと幸せになれる時がくるかもしれません。
中身ゴリっと書き換えるとversionup時に面倒になるので、プラグイン化したら幸せになりますよ、ってことです。
ああ、それを載せればよかったんですね。下のコードをコピペしてwp-content/pluginsに突っ込んであげればいいと思います。
適当にコピったので動作保障はなしです。
--- ここから
remove_filter('sanitize_title', 'sanitize_title_with_dashes');
add_filter('sanitize_title', 'sanitize_title_with_dashes_nico');

function sanitize_title_with_dashes_nico($title) {
$title = strip_tags($title);
// Preserve escaped octets.
$title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title);
// Remove percent signs that are not part of an octet.
$title = str_replace('%', '', $title);
// Restore octets.
$title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title);

$title = remove_accents($title);
if (seems_utf8($title)) {
if (function_exists('mb_strtolower')) {
$title = mb_strtolower($title, 'UTF-8');
}
$title = utf8_uri_encode($title, 255);
}

$title = strtolower($title);
$title = preg_replace('/&.+?;/', '', $title); // kill entities
$title = preg_replace('/[^%a-z0-9 _-]/', '', $title);
$title = preg_replace('/\s+/', '-', $title);
$title = preg_replace('|-+|', '-', $title);
$title = trim($title, '-');

return $title;
}
--- ここまで それにしても朝早いっすね。自分はもう眠くて眠くて・・・。


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4938日前に更新/183 KB
担当:undef