WordPressの下書きが404エラーになるときの対策について

下書きが404になって困ってる・・・

WPでいつの間にか下書きがプレビューできなくなった、という方から連絡をいただいて、試行錯誤した備忘録です。

Custom Permalinks(2016.7.16現在バージョン 0.7.25)を入れていたら要注意

結論から言うと、下記の方法でダメな場合でCustom Permalinksというプラグインを入れていたら、後述の方法を試す価値があると思います。

  1. wp-config.phpの認証用ユニークキーを更新する方法
  2. pre_get_posts(functions.php内)の記述を修正する方法

プラグイン編集でSQLを修正する

  1. 管理画面左のプラグインメニューより
  2. プラグイン編集
  3. 右上プルダウンで「Custom Permalinks」を選択し、右隣の「選択」ボタンをクリック
  4. 下記の部分を修正してファイルを更新

165行目付近(Custom Permalinks バージョン 0.7.25)

  // Queries are now WP3.9 compatible (by Steve from Sowmedia.nl)
  $sql = $wpdb->prepare("SELECT $wpdb->posts.ID, $wpdb->postmeta.meta_value, $wpdb->posts.post_type, $wpdb->posts.post_status 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('%s'), LENGTH(meta_value)) OR ".
            "    LOWER(meta_value) = LEFT(LOWER('%s'), LENGTH(meta_value)) ) ".
            "  AND post_status != 'trash' AND post_type != 'nav_menu_item' AND ".
            "  post_type NOT IN ('revision') ". // この一行を追加
            " ORDER BY LENGTH(meta_value) DESC, ".
            " FIELD(post_status,'publish','private','inherit'),".  // この行から'draft','auto-draft',を削除する
            " FIELD(post_type,'post','page'),".
            "$wpdb->posts.ID ASC  LIMIT 1",
    $request_noslash,
    $request_noslash."/");

以上備忘録でした。

関連記事一覧

  1. 夏季休業のお知らせ
  2. 11月臨時休業のお知らせ
PAGE TOP