WordPress 2.5.xで類似したタイトルが公開できない場合の修正方法
Post on:2008年7月15日
WordPress.orgのフォーラムより、WordPress 2.5.xで類似したタイトルの保存はできるけど、公開はタイムエラーなどになってしまい、公開できない場合の対応方法の紹介です。
現象
- 2.3.3からアップグレードしたWPで日本語または英語の重複タイトルを送信
- 新規インストールのWP 2.5で日本語の重複タイトルを送信
当サイトの場合、2.3.3から2.5にアップグレードしたWordPressでタイトルが類似している場合、保存は可能ですが、公開はタイムエラーになってしまいました。
類似したタイトルの例:
[JS]jQueryのプラグイン33+1選 -2008年1月
[JS]jQueryのプラグイン33+1選 -2008年3月
解決方法
そのうちWordPressの方で対応するバージョンが登場するかもしれませんが、上記フォーラムに掲載されていた下記の対応方法で公開できるようになりました。
対象ファイル
wp-includes/post.php
修正方法
ループの処理を下記のように変更すると直るとのことです。
フォーラムにはL.1269~1279とありましたが、当サイトのWP2.5.1にはL.1284以降でした。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<textarea name="code" class="html" cols="60" rows="5"> if ($post_name_check || in_array($post_name, $wp_rewrite->feeds) ) { $suffix = 2; do { $alt_post_name = substr($post_name, 0, 200-(strlen($suffix)+1)). "-$suffix"; $alt_post_name = urldecode ($alt_post_name); //★追加 // expected_slashed ($alt_post_name, $post_name, $post_type) $post_name_check = $wpdb->get_var($wpdb->prepare("SELECT post_name FROM $wpdb->posts WHERE post_name = '$alt_post_name' AND post_type = '$post_type' AND ID != %d AND post_parent = %d LIMIT 1", $post_ID, $post_parent)); $suffix++; } while ($post_name_check); //$post_name = $alt_post_name; $post_name =urlencode($alt_post_name); //★変更 } </textarea> |
※L.11に元のコードをコメントで残してあります。
注意
上記の修正方法で1ヶ月以上運営してみて、今のところ不具合はなく、類似したタイトルの公開・予約公開もできるようになりました。
※環境やバージョンによって不具合が生じることもあるかもしれませんので、修正する際は自己責任でお願いします。
sponsors