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
sur false
ou rewrite
sur false
empêchera l'affichage de la vue unique et de la vue archive. Il n'y a pas d'indicateur dans register_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.
/**
* Register event post type
*/
function wpse_128636_register_event_post_type() {
$labels = array(
'name' => __( 'Events' ),
'singular_name' => __( 'Event' ),
'add_new' => __( 'Add new' ),
'add_new_item' => __( 'Add new' ),
'edit_item' => __( 'Edit' ),
'new_item' => __( 'New' ),
'view_item' => __( 'View' ),
'search_items' => __( 'Search' ),
'not_found' => __( 'Not found' ),
'not_found_in_trash' => __( 'Not found Events in trash' ),
'parent_item_colon' => __( 'Parent' ),
'menu_name' => __( 'Events' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => false,
'supports' => array( 'title', 'page-attributes' ),
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'publicly_queryable' => true,
'exclude_from_search' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'event'),
'capability_type' => 'post',
);
register_post_type( 'event', $args );
remove_rewrite_tag( '%event%' ); // This line will remove event rewrite rules for single view
}
add_action( 'init', 'wpse_128636_register_event_post_type' );
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.
get_current_user_id()
évaluation est égale à 0.