Je veux pouvoir avoir un lien comme celui-ci, site.com/my-custom-type-slug/single-custom-post-name/stats/ , où/stats doit contenir le contenu de la page/my-custom-type-slug et lorsque j'ajoute du contenu à la page/stats , il doit être ajouté après le contenu du parent.
La page/stats doit être disponible pour chaque page créée dans mon CPT, par exemple/mon-custom-type-slug2 ,/mon-custom-type-slug3 , et ainsi de suite, pour avoir le/stats .
Je pense qu’une solution peut être de créer une page nommée stats et d’affecter un modèle personnalisé, mais le problème est de savoir comment puis-je créer le contenu supplémentaire pour chaque nouveau message que je crée?
Ce serait facile si je n'avais pas besoin d'activer les commentaires car je le faisais comme ceci:
Ajoutez un champ WYSIWYG personnalisé dans mes publications avec ACF plugin, puis créez un point de terminaison:
function wpa121567_rewrite_endpoints(){
add_rewrite_endpoint( 'stats', EP_PERMALINK );
}
add_action( 'init', 'wpa121567_rewrite_endpoints' );
Après cela, mon URL ressemblerait à ceci:site.com/your-custom-type-slug/single-custom-post-name/stats/
Ensuite, dans mon modèle single-{cpt}.php
, je peux vérifier si la demande concerne stats , et inclure ou générer les données souhaitées:
if( array_key_exists( 'stats', $wp_query->query_vars ) ){
// the request is for the comments page
}
else {
// the request is for the main post
}
Cette solution ne fonctionne pas pour moi car je ne peux pas activer les commentaires sur/stats car j'utilise un noeud final pour le créer.
En conclusion, il me faut deux ensembles de commentaires distincts pour les pages parent et "/ stats". Des suggestions sur la façon de réaliser ceci?
Je suggère un type de publication personnalisé hiérarchique et une condition pour créer une boucle supplémentaire sur votre single-{cpt}.php
. En utilisant un type de message personnalisé hiérarchique, vous pouvez créer un sous-cpt , comme une sous page comme la partie stats de son article parent.
Le sous-cpt then peut être utilisé pour stocker des données supplémentaires (par exemple, dans post_content ou custom_fields) ainsi que le commentaire spécifique à la partie stats de la publication.
Notez que vous devrez inclure uniquement le parent cpt (à l'exclusion du sous-cpt) sur la boucle principale à l'aide du hook pre_get_posts
.
Sur le single-{cpt}.php
cela devrait être quelque chose comme ça
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php if( array_key_exists( 'stats', $wp_query->query_vars ): ?>
<!-- output the data for the stats part -->
<?php
// query sub cpt data
$args = array(
'post_parent' => $post->ID,
'post_type' => 'your-cpt',
'posts_per_page' => 1,
'post_status' => 'any'
);
$sub_cpt = get_children( $args);
// query sub cpt comment
$args = array(
'post_id' => $sub_cpt->ID,
);
$child_post_comment = get_comments( $comment_args );
?>
<?php else: ?>
<!-- output the data as you intended for the non stats part -->
<?php the_title(); ?>
<?php the_content(); ?>
<?php
// query sub cpt comment
$args = array(
'post_id' => $post->ID,
);
?>
<?php get_comments( $args ); ?>
<?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>