質問: カスタム投稿タイプの投稿urlからスラッグを削除する すべてのwebリソースはカスタム投稿タイプのスラッグを削除するというテーマに基づいているようです。yourdomain.com/cpt-slug/post-name 現在は非常に古くなったソリューションで、pre wp バージョン3.5のインストールをしばしば参照しています。一般的なものは以下のとおりです。'rewrite' => array( 'slug' => false, 'with_front' => false ), register_post_type関数内でこれはもはや機能せず、誤解を招くものです。だから私はワードプレス5の瀬戸際で2018年第3四半期にコミュニティに尋ねる...書き換え引数内などからカスタム投稿タイプ投稿のurlから投稿タイプスラッグを削除するための最新かつ効率的な方法は何ですか?更新:これを正規表現で動作させるにはいくつかの方法があるようです。特にjan beckからの回答は、競合するページ/投稿名が作成されないように常にコンテンツの作成を監視することをお勧めします。ただし、これは wp coreの主な弱点であると確信しています。それは私たちのために扱われるべきです。 cpt作成時のオプション/フックとしても、パーマリンク用の高度なオプションセットとしても。トラックチケットをサポートしてください。脚注:このtracチケットを見て宣伝することでサポートしてください: https://core.trac.wordpress.org/ticket/34136#ticket
回答: 私がやったように子供の投稿に問題があったこれを読んでいる人のために私は最善の方法はあなた自身の書き換え規則を追加することであることがわかった。私が抱えていた主な問題は、wordpressが2レベル(子投稿)のページからのリダイレクトを3レベル(子投稿の子)とは少し異なる方法で扱うことでした。つまり、/ post-type/post-name/post-child /がある場合、/ post-name/post-childを使用できますが、post-typeが前面にあるものにリダイレクトされますが、post-typeがある場合/ post-name/post-child/post-grandchildそれでは私はpost-name/post-child/post-grandchildを使えません。書き換え規則を見てみると、最初のレベルと2番目のレベルでpagename以外のものと一致しているように見え(2番目のレベルは添付ファイルと一致していると思います)、適切な投稿にリダイレクトします。 3段階の深さではうまくいきません。あなたがしなければならない最初のことは、同様に子供から投稿タイプのリンクを削除することです。上記のnate allenの答えを見れば、この論理はここで起こるはずです。$post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link ); 私自身、投稿に子供がいるかどうか、正しいパーマリンクにたどり着くために何がないかをチェックするために、さまざまな条件を組み合わせて使用しました。この部分はそれほど複雑ではないので、他の場所でそれを実行している人々の例を見つけることができます。しかし次のステップは、物事が与えられた答えから変わるところです。メインのクエリに何かを追加する代わりに(これはカスタム投稿とその子には有効でしたが、それ以上の子には有効ではありませんでした)私はwordpressのルールの最後に書き直しました。 404を押すと、カスタム投稿タイプ内のページが同じ名前であるかどうかを確認するための最後のチェックが1回行われます。それ以外の場合は404がスローされます。これは、 'event'があなたのcptの名前であると仮定して私が使用した書き換え規則です。function rewrite_rules_for_removing_post_type_slug() { add_rewrite_rule( '(.?.+?)?(:/([0-9]+))?/?$', 'index.php?event=$matches[1]/$matches[2]&post_type=event', 'bottom' ); } add_action('init', 'rewrite_rules_for_removing_post_type_slug', 1, 1); これが他の誰かに役立つことを願っています、私は子供の投稿の子とそれらからナメクジを削除するためにしなければならなかった何かを見つけることができませんでした。