Je souhaite afficher les commentaires dans une fenêtre contextuelle pour la page avec id=22
.
C'est l'ancre sur le clic de laquelle la popup s'ouvrira:
<a class="button button-small button-line-light comment-popup"
href="<?php echo get_stylesheet_directory_uri();?>/comments-detail.php">View All</a>
Si j'ai du code HTML dans comments-detail.php
, la fenêtre contextuelle affiche le code HTML.
Mais lorsque j'essaie d'obtenir la liste des commentaires de la page id=22
, en comments-detail.php
, avec le code simple suivant:
<?php
$args = array(
'post_id' => 22
);
$comments = get_comments( $args );
?>
alors j'obtiens l'erreur:
appel à la fonction non définie
get_comments()
Qu'est-ce que je fais mal ou mon approche est-elle totalement fausse?
Vous réinventez la roue ici ;-)
Vous contournez WordPress avec cette approche, ce qui explique le message d'erreur.
L'accès à n'importe quel fichier personnalisé, dans votre répertoire de thème, ne chargera pas le noyau WordPress automatiquement.
Ceci est déjà supporté par le noyau WordPress.
Vous devriez vérifier comments_popup_link()
et comments_popup_script()
.
En général, vous pouvez obtenir tous vos commentaires, pour un article donné, avec:
example.tld/?comments_popup=123
où 123
est un identifiant .
Vous pouvez remplacer le modèle de commentaire popup par défaut en plaçant votre propre version du fichier comments-popup.php
dans le répertoire du thème actuel.
Celui par défaut se trouve dans /wp-includes/theme-compat/comments-popup.php
.
En noyau, nous avons cette description :
- Le chemin du template est filtrable via le hook 'comments_popup_template'.
mais ce n'est pas correct. Le template vient de:
$template = get_query_template( 'comments_popup', array( 'comments-popup.php' ) );
et dans get_query_template()
nous avons le nettoyage suivant:
$type = preg_replace( '|[^a-z0-9-]+|', '', $type );
où le type comments_popup
est remplacé par commentspopup
.
Le filtre correct est donc:
add_filter( 'commentspopup_template', function( $template )
{
return $template;
} );
Il semble que le type correct était censé être comments-popup
et non pas comments_popup
. Mais on peut alors se demander pourquoi le trait de soulignement est supprimé - consultez le ticket # 21213 pour en savoir plus à ce sujet.
J'ai déposé ici un ticket # 32989 , relatif à la documentation en ligne.