以下の設定で登録したカスタムのpost_typeがあります。
'labels' => piklist('post_type_labels', 'Tattooer')
,'title' => __('Enter the name of the tattooer')
,'supports' => array(
'title',
'editor',
'thumbnail',
'page-attributes'
)
,'public' => true
,'has_archive' => true
,'rewrite' => array(
'slug' => 'tattooer'
)
,'publicly_queryable' => false
,'capability_type' => 'post'
,'edit_columns' => array(
'title' => __('Name')
)
,'hide_meta_box' => array(
'author'
)
私はどんなtattooer
投稿にもURLが欲しくありません。 'publicly_queryable' => false
がこの仕事のためのツールであると私は理解しています。しかし、これをfalse
に設定すると、単一のURLはまだアクティブです(例:/ tattooer/foobar /)が、ホームページにリダイレクトします。意図した振る舞いは404であるべきだと思う、それが私が欲しいものです。何が足りないの?
カスタムのpost_typeの登録を促進するために、すばらしい Piklistプラグイン を使用していますが、それなしでもテストしたところ、結果は同じです。
私の情報は ドキュメント および この非常によく似た質問に基づいています 。
アーカイブが欲しいが単数ビューは望まないのなら、'publicly_queryable'
は役に立ちません。
あなたがそれを訪問したいのであれば、単数の投稿に404を送ってください...ちょうどそれをしてください。
'template_redirect'
をフックして手動で404を設定することができます。
add_action(
'template_redirect',
function () {
if (is_singular('tattooer')) {
global $wp_query;
$wp_query->posts = [];
$wp_query->post = null;
$wp_query->set_404();
status_header(404);
nocache_headers();
}
}
);
残念ながら、WPに force 404の機能はありません。手動で行う必要があります。