投稿を作成したときにページを作成する機能があります(親子関係ツリーを構築するため)。
私はページを作成するために投稿の$タイトルを使用しています、そしてこれも複製スラッグを作成します。それを独特にするためにスラグをわずかに変える方法はありますか?新しいスラグが元の投稿に干渉しないようにするにはどうすればよいですか。
あなたがwp_insert_post
を使うならば、それはあなたのためにユニークなポストスラグを計算するべきです。 wp_insert_post
を使わないのなら、 wp_unique_post_slug
を使ってみてください。どちらもうまくいかない場合は、挿入する前に単純に-page
または新しいページのpost_name
(slug)に追加してみてください。
WordPressはポストスラッグの独自性をアプリケーションレベルでチェックします - wp_posts.post_name
に独自のインデックスがあるようには見えません。したがって、たとえば、2つの投稿を同時に作成しているトランザクション内にいる場合、一意性チェックは失敗します。 2つの投稿が同時に挿入され、両方のスラッグの一意性チェックが失敗するような、ある種の競合状態を引き起こす可能性もあります。
私の経験からすると、要求は通常反対です - WPが頑固にそれらを生成することを拒否するとき同じスラッグを達成すること。 :)
スラグが階層型と非階層型の投稿タイプの間で重複することはごくわずかですが、それらの中で別々には表示されません。あなたの場合はpost(非階層)とpage(階層)が関係しているので、WPはスラッグの再利用を喜んで許可します。
手動でWPに強制的にページのスラッグを複製させたくない場合は、おそらく重複チェックを失敗させて数値接尾辞ロジックを起動させることをお勧めします。次のフィルタを介して実行できるwp_unique_post_slug()
ソースを見てください。
apply_filters( 'wp_unique_post_slug_is_bad_hierarchical_slug', false, $slug, $post_type, $post_parent )
スラッグが繰り返されると、WPが自動的に末尾に数字を追加すると思います。