J'ai créé un type de message personnalisé:
register_post_type('sample_post_type',array(
'labels' => array(
'name' => _x('Sample Posts', 'post type general name'),
'singular_name' => _x('Sample Post', 'post type singular name')
),
'public' => true,
'show_in_nav_menus' => false,
'exclude_from_search' => true
));
Comment puis-je désactiver l'affichage de publication unique pour ce type de publication spécifique? Afficher un simple 404 est correct, ou rediriger vers la page d'accueil. Ceci est à l'intérieur d'un plugin, donc je ne peux pas créer un fichier single-sample_post_type.php pour configurer une page vide.
la source
get_current_user_id()
évaluation est égale à 0.is_singular('post-type-slug')
dans laif()
condition au lieu de 2 conditions?Juste mettre l'argument
lorsque vous appelez register_post_type ()
la source
Une méthode plus simple consiste à passer les arguments suivants lors de l’enregistrement du type de publication personnalisé.
la source
publically_querable
être vrai pour que Post Type Archives fonctionne.Un. À partir de votre fichier de fonctions.
Deux. Depuis votre fichier single.cpt.php:
la source
single-cpt_name.php
fichier personnalisé , vous ne pouvez pas le faire. Si vous mettez la fonction dans un simple fichier de plug-in, vous pouvez activer / désactiver sans modifier aucun fichier.Travaillant à partir de la très bonne réponse de Sven, j'ai réécrit sa fonction pour faciliter l'ajout de plusieurs types de publication en utilisant
in_array()
l'instruction if, puis en redirigeant vers la page d'archive au lieu de la page d'accueil.(au fait, je pense que le paramètre
query_var
et / ou la valeurpublically_queryable
false désactivera non seulement les vues uniques, mais également la vue d’archive native, qui les redéfinit'has_archive' => true
. Dans ce cas, vous pouvez toujours configurer un WP_query personnalisé et créer votre propre page d’archive, dans un modèle, mais la requête principale ne le fera plus, n'est-ce pas?)la source
Testé tous ceux mentionnés ci-dessus et la solution réelle est plus simple que toutes les redirections suggérées.
Afin que l'archive soit accessible et répertorie les éléments, et que le post simple ne soit pas accessible et redirige automatiquement vers l'ensemble 404
lors de l'enregistrement de votre CPT. Si vous définissez
publicly_queryable
sur false, vos archives seront redirigées vers la maison, toute autre combinaison ne fonctionnera pas. Définissez lequery_var
sur false et c'est tout.Voici le CPT complet: https://gist.github.com/danyj/bfd038d3c8d578548c4d700bd0a7942a
voir la ligne 50 https://gist.github.com/danyj/bfd038d3c8d578548c4d700bd0a7942a#file-thz_cpt_items_single_view_redirect-php-L50
comme indiqué ici
https://codex.wordpress.org/Function_Reference/register_post_type
la source
Si vous souhaitez désactiver complètement le mode d'affichage unique de type publication personnalisé sur le front-end, mais que vous puissiez afficher la page d'archivage, les choses deviennent un peu compliquées.
Définir
publicly_queryable
surfalse
ourewrite
surfalse
empêchera l'affichage de la vue unique et de la vue archive. Il n'y a pas d'indicateur dansregister_post_type
les arguments de fonction pour empêcher la création de règles de réécriture de vue unique.https://github.com/WordPress/WordPress/blob/5.2.3/wp-includes/class-wp-post-type.php#L540
Cependant, vous pouvez supprimer la balise de réécriture après avoir enregistré votre type de publication, ce qui laissera les règles de réécriture de la vue d'archive intactes, mais supprimera uniquement les règles de réécriture d'une seule vue.
Un autre avantage est que vous pouvez désormais créer de simples pages WordPress en utilisant une structure permalink (
event/simple-page
) de type publication après type d’événement, ce qui peut être utile pour les sites Web complexes.N'oubliez pas de vider les règles de réécriture après la modification du code.
la source