サポート » バグ報告と提案 » 同じスラッグ名を付けて公開・下書きを分けた場合404エラーになる問題

  • 解決済 nandanisyougo

    (@nandanisyougo)


    バグっぽいのを見つけたので報告です。
    1.まず「投稿」記事を新規投稿する際、タイトル下(パーマリンク)のスラッグ入力フィールドで「hoge」と入力して「OK」ボタンをクリックして「公開」保存をします。
    2.次に、1.とは別の「投稿」記事を新規投稿する際、「hoge」という同じスラッグを任意に入力して、今度は「下書き」保存します。
    そうすると、すでに公開している1.の記事のページを開くと404エラーになってしまいます。

    これの困った点は、2.の記事を作成する際、「hoge」というスラッグをつけて「OK」ボタンを押すと「hoge-2」という表示に切り替わるので、一見大丈夫だろうと思ってしまうのですが、実際はアウトであるところです。
    また、アーカイブページでは正常にタイトルや内容など表示されているのに、詳細ページに行くと404エラーになってしまいます。

    なお、「投稿」記事のタイトルが自動的にスラッグ名に入る場合は、重複しても(同じタイトルを付けた場合でも)問題ありません。
    さらに、「固定ページ」では、任意に同じスラッグ名を付けた場合でも問題はありません。
    あくまで「投稿」のみで起こります(カスタム投稿でもおきますが)

    後で同じスラッグ名を付けてしまい、下書き保存してしまうことはありえますし、公開記事が結構過去のものだと気づきづらい問題もありますので、これを解消する方法やプラグインなどありましたら教えていただけると幸いです。

    よろしくお願いいたします。

    • このトピックは nandanisyougoが8 ヶ月前に変更しました。
    • このトピックは nandanisyougoが8 ヶ月前に変更しました。
    • このトピックは nandanisyougoが8 ヶ月前に変更しました。
    • このトピックは nandanisyougoが8 ヶ月前に変更しました。
9件の返信を表示中 - 1 - 9件目 (全9件中)
  • nandanisyougo

    (@nandanisyougo)

    追記です。
    404エラーが開くと書きましたが、正確には1.のページを開いているのに2.のページが開いてしまい、でも下書きなので404になるという感じです。
    管理画面に入っていると404にはならない(2.の記事が普通に開く)ので、これもまたわかりづらい部分であります。

    • この返信は8 ヶ月前に  nandanisyougo さんが編集しました。

    wp4.7.1で確認してみました。

    「スラッグを自分で指定して、それが他の投稿と被る場合に変更する(hogeをhoge-2のようにする)処理が、下書き保存した時は行われない。公開した時に行われる」
    が問題のような気がしますね。

    404エラーについては、URLが完全に一致する場合のみ起きるようです。
    1. パーマリンクがデフォルトや数字ベースなら問題なく表示される
    2. パーマリンクに年月日が入っていれば、年月日まで一致する場合のみ、404になる

    下書き保存でもスラッグが衝突しないような修正が好ましいと思います。

    現状での回避策としては、

    確実なもの
    ● スラッグは自分でつけない(WPに任せる)
    or
    ● パーマリンクをデフォルトや数字ベースなど、スラッグが無いものにする

    ほぼ大丈夫なもの
    ● パーマリンクに年月日を入れる

    nandanisyougo

    (@nandanisyougo)

    ご返答ありがとうございます!

    確実なもの
    ● スラッグは自分でつけない(WPに任せる)
    or
    ● パーマリンクをデフォルトや数字ベースなど、スラッグが無いものにする

    ほぼ大丈夫なもの
    ● パーマリンクに年月日を入れる

    そうですよね・・・
    ひとまず気をつけるということで対処したいと思います。

    もう1点気になる点のご報告として、この現象が起きた際、1.の公開済みの記事の方を編集保存すると、スラッグ名がに「-2」がついてしまいます(例:hoge-2)
    ただ、これでちゃんと1.のページが閲覧できるようになります。(スラッグ名は変わってしまいますが)
    そして、2.の下書きの方をそのあとで公開保存すると、スラッグ名がそのままになります(例:hoge)
    後追いのほうが勝つというのは正直どうかと思います。(ページが入れ替わっちゃってますし・・・あ、これを狙ってる?)
    そのうちバージョンアップで治ると良いのですが・・・

    nandanisyougo

    (@nandanisyougo)

    ちゃんとテストはしていないですが、こんな感じでひとまず404エラーは回避できそうです。
    functions.phpに以下を追記

    add_action('pre_get_posts', 'custom_pre_get_posts' );
    function custom_pre_get_posts($query){
    	if ( is_admin() || ! $query->is_main_query() ){
    		return;
    	}
    	if($query->is_single && !$query->is_preview){
    		$query->set( 'post_status' , 'publish');
    	}
    }
    • この返信は8 ヶ月前に  nandanisyougo さんが編集しました。
    • この返信は8 ヶ月前に  nandanisyougo さんが編集しました。
    CG

    (@du-bist-der-lenz)

    WordPress 4.7.1, Twenty Seventeen で Hello world のタイトルで投稿を新規作成したところ、スラッグもhello-world-2となり、これまで道理です。
    問題とは感じないのですが、そういうことではないのですか?

    nandanisyougo

    (@nandanisyougo)

    ご返信ありがとうございます。

    上記にも書かせていただいているのですが、タイトルから自動的にスラッグが生成される場合はこの問題は起こりません。
    任意にスラッグ名を付けた場合にこの問題が起こります。

    また、Fumito MIZUNO様もおっしゃっている通り、完全にURLが一致する場合に限りますので、年月日URLで日付が違ったりする場合は正常に動作します。
    例:↓この場合は大丈夫
    http://ja.wordpress.org/2017/01/19/hello-world(下書き)
    http://ja.wordpress.org/2017/01/18/hello-world(公開済み)

    このようなこともあるため、なかなか発覚しづらい問題ではあるかと思います。

    CG

    (@du-bist-der-lenz)

    同日に同一記事が重複投稿されるのを予防する策ではないのか。

    CG

    (@du-bist-der-lenz)

    最初の Hello world は20時間前ですが、現在1月19日午後21時ですので、投稿日は同じ。パーマリンクは投稿名です。

    nandanisyougo

    (@nandanisyougo)

    注意するという方向で解決とさせていただきます。
    ご返信頂きました皆さん、ありがとうございました。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「同じスラッグ名を付けて公開・下書きを分けた場合404エラーになる問題」には新たに返信することはできません。