J'ai un post_type personnalisé que j'ai enregistré avec les paramètres suivants:
'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'
)
Je ne souhaite pas que des URL versent des articles tattooer
uniques. Si j'ai bien compris, 'publicly_queryable' => false
est l'outil idéal pour ce travail. Mais lorsque je le règle sur false
, l'URL unique est toujours active (Ex:/tattooer/foobar /) mais redirige vers la page d'accueil. Je pense que le comportement souhaité est que ce soit un 404, ce que je veux. Qu'est-ce que je rate?
Notez que j'utilise le merveilleux plugin Piklist pour accélérer l'enregistrement de post_type (s) personnalisé (s), mais j'ai également testé sans lui et les résultats étaient les mêmes.
Mes informations sont basées sur la documentation et cette question très similaire .
Si vous voulez des archives, mais pas une vue unique, alors 'publicly_queryable'
ne pourra pas vous aider.
Si vous voulez que visiter un poste singulier envoyer un 404 ... faites-le.
Vous pouvez accrocher 'template_redirect'
et définir manuellement le 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();
}
}
);
Malheureusement, il n'y a pas de fonction dans WP à force 404, et vous devez le faire manuellement.