■質問内容
何故ワードプレスのスラッグ重複回避の処理は、下書きやレビュー待ちのステータスに変更時に適用されないのでしょうか?
■経緯
ワードプレスの仕様では、スラッグが他の記事と重複した場合、後から作成した記事の方のスラッグの末尾に-2、-3と連番が振られるかと思います。
後から作成した記事のステータスを「公開」にすれば
元々の記事は
http://ドメイン/wp/test/
後から作成した記事は
http://ドメイン/wp/test-2/
となるかと思います。
しかし、後から作成した記事のステータスを「公開」にする前に、「下書き」や「レビュー待ち」にしてしまうと、
元々の記事と同じスラッグが割り振られてしまい、既に公開済みの元々の記事が404エラーになります。
公開済みの記事と下書き状態の記事(ログインユーザー以外は非公開)が同じページに呼び出されてしまい上記エラーになるのだと思います。
記事を公開するまで少なからず、公開済みの記事が見れなくなる状態は好ましくないので、
スラッグが重複する投稿の連番を振る処理に以下のように手を加えました
・変更ファイル
/www/wp-includes/post.php
・変更箇所
元々のif文をコメント化して、下書きやレビュー待ちのステータスを判定している箇所を削除したif文に変更しました。
php
1function wp_unique_post_slug( $slug, $post_ID, $post_status, $post_type, $post_parent ) { 2 //if ( in_array( $post_status, array( 'draft', 'pending', 'auto-draft' ) ) || ( 'inherit' == $post_status && 'revision' == $post_type ) ) 3 if ( 'inherit' == $post_status && 'revision' == $post_type ) 4 return $slug;
・ワードプレスバージョン
4.9.2
上記変更を加えたところ、下書きやレビュー待ちのステータスにした場合にスラッグに連番が振られるようになり、
前述の問題は発生しませんでした。
ここで質問に戻るのですが、ワードプレスはなぜ下書きやレビュー待ちにステータスを変更した際に、スラッグを確定させないのでしょうか?

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/05 11:39