Custom Permalinksでリンク先が404になる場合の対応
- 2017.02.03
- CMS Wordpress
- Custom Permalinks, plugin, バグ
Custom Permalinksを使用した特定のページのパーマリンクが404になってしまう。
1、ツール>Custom Permalinksを確認し、「同じタイトル」「同じパーマリンク」があるか確認する。
2、revision というrevisionという投稿タイプが当てられている
3、問題のある記事のリビジョンを全て消す
——————–
上記では根本的な解決にはならないので、下記phpを修正する。
wp-content/plugins/custom-permalinks/custom-permalinks.phpの145行目付近にあるcustom_permalinks_request($query)なる関数の中にあるSQL文。
$sql = "SELECT $wpdb->posts.ID, $wpdb->postmeta.meta_value, $wpdb->posts.post_type FROM $wpdb->posts ". "LEFT JOIN $wpdb->postmeta ON ($wpdb->posts.ID = $wpdb->postmeta.post_id) WHERE ". " meta_key = 'custom_permalink' AND ". " meta_value != '' AND ". " ( LOWER(meta_value) = LEFT(LOWER('".mysql_real_escape_string($request_noslash)."'), LENGTH(meta_value)) OR ". " LOWER(meta_value) = LEFT(LOWER('".mysql_real_escape_string($request_noslash."/")."'), LENGTH(meta_value)) ) ". "ORDER BY LENGTH(meta_value) DESC LIMIT 1";
これに一行下記のクエリを挿入する。
" post_type NOT IN ('revision') AND ".
$sql = "SELECT $wpdb->posts.ID, $wpdb->postmeta.meta_value, $wpdb->posts.post_type FROM $wpdb->posts ". "LEFT JOIN $wpdb->postmeta ON ($wpdb->posts.ID = $wpdb->postmeta.post_id) WHERE ". " meta_key = 'custom_permalink' AND ". " meta_value != '' AND ". " post_type NOT IN ('revision') AND ". " ( LOWER(meta_value) = LEFT(LOWER('".mysql_real_escape_string($request_noslash)."'), LENGTH(meta_value)) OR ". " LOWER(meta_value) = LEFT(LOWER('".mysql_real_escape_string($request_noslash."/")."'), LENGTH(meta_value)) ) ". "ORDER BY LENGTH(meta_value) DESC LIMIT 1";
参考サイト
-
前の記事
カテゴリーに設定したカスタム投稿の値を取得する 2017.01.30
-
次の記事
WordPressアップグレードに関してまとめ 2017.02.08