WordPress possède un formulaire de commentaire adapté à la plupart des blogs. Cependant, comment s’y prendre si vous souhaitez ajouter ou supprimer des champs et personnaliser l’affichage des commentaires ?
WordPress prévoit la possibilité de personnaliser le formulaire de commentaire grâce à la fonction comment_form( $args, $post_id )
, cette fonction est intéressante mais quelque peu limitée. Nous allons plutôt aborder quelques crochets (hooks) s’y rapprochant.
Concrètement, il faut procéder en trois étapes :
- insérer ou supprimer un champ dans le formulaire
- permettre l’insertion des données renseignées dans la base de données
- afficher les nouvelles données dans les commentaires
Je vous invite à éditer votre fichier functions.php
pour effectuer des tests avec les codes que je vais fournir.
Allez, c’parti !
Insérer et supprimer des champs dans le formulaire de commentaire
Cette première étape va utiliser le hook comment_form_defaults
et se présente sous la forme d’une manipulation de tableau PHP.
Les champs sont enregistrés dans l’entrée « fields » du tableau et peuvent être manipulés assez simplement. Ils contiennent du code HTML que nous allons reproduire pour nos champs personnalisés.
add_filter( 'comment_form_defaults', 'juiz_manage_default_fields');
// $default contient tous les messages du formulaire de commentaire
// il contient également "comment_field", le textarea du message
if ( !function_exists('juiz_manage_default_fields')) {
function juiz_manage_default_fields( $default ) {
// Récupération des infos connues sur le visiteur
// Permet de pré-remplir nos nouveaux champs
$commenter = wp_get_current_commenter();
// Suppression d'un champ par défaut parmi : author, email, url
unset ( $default['fields']['url'] );
// Ajout des champs dans le tableau "fields"
// $commenter[] contient les infos sur le visiteur
$default['fields']['job'] = '<p class="comment-form-author-job comment-form-author">
<label for="job">'. __('Your job') . '</label>
<span class="required">*</span>
<input id="job" name="job" value="'.$commenter['comment_author_job'].'" aria-required="true" size="30" type="text" />
</p>';
$sel_female = $sel_male = '';
if ( $commenter['comment_author_gender'] != '') ${'sel_'.$commenter['comment_author_gender']} = ' checked="checked"';
$default['fields']['gender'] = '<p class="comment-form-author-gender">
<span class="label_like">'. __('Your gender') . '</span>
<label for="female">F</label> <input '. $sel_female .' id="female" name="gender" value="female" type="radio" />
<label for="male">M</label> <input '. $sel_male .' id="male" name="gender" value="male" type="radio" />
</p>';
// On retourne le tableau des champs
return $default;
}
}
Quelques explications s’imposent :
Concernant le HTML produit, je copie et adapte la structure par défaut de mon thème sur les champs de formulaire (ici TwentyEleven) dans le but de limiter les modifications futures sur la CSS (d’où la copie de la classe comment-form-author
sur comment-form-author-job
).
Le tableau des champs (fields) ressemble à cela :
array(
'author' => '<p class="comment-form-author">…',
'email' => '<p class="comment-form-email">…',
'url' => '<p class="comment-form-url">…'
);
Pour ajouter un champ il me suffit donc de faire (en remplaçant « slug » par quelque chose de pertinent) :
$default['fields']['slug'] = '<p class="comment-form-author-slug">…';
La ligne 12 récupère les cookies enregistrés lorsque qu’un commentaire est posté par un utilisateur. Ils n’existent donc pas lorsqu’un visiteur n’a jamais commenté sur votre blog, mais permettent ensuite de pré-remplir les champs (ligne 26 et 30) si l’utilisateur revient poster un commentaire.
Nous verrons plus loin comment nous enregistrons les cookies pour nos nouveaux champs de formulaire.
À noter : Il existe le hook comment_form_defaults_fields
qui permet de manipuler directement les champs (ex : unset($default['url']
). Cependant j’ai une légère préférence pour le hook comment_form_defaults
car il permet d’atteindre d’autres éléments du formulaire.
Par contre, si votre objectif est de supprimer simplement le champ url par exemple :
add_filter('comment_form_default_fields','juiz_remove_url_field');
if ( !function_exists('juiz_remove_url_field')) {
function juiz_remove_url_field( $fields ) {
unset($fields['url']); return $fields;
}
}
Enregistrer les données des champs personnalisés
Cette seconde étape se découpe en deux sous-étapes si certains de vos champs sont obligatoires.
Le premier hook utilisé est comment_post
qui permet d’intervenir lorsque le commentaire a été enregistré.
Le second est preprocess_comment
qui intervient avant l’enregistrement des données en base, notamment pour les contrôler.
Nous allons donc d’abord contrôler notre champ obligatoire ‘job’ pour retourner une erreur s’il est vide :
add_filter( 'preprocess_comment', 'juiz_verify_comment_data' );
if ( !function_exists('juiz_verify_comment_data') ) {
function juiz_verify_comment_data( $commentdata ) {
// si job est vide on affiche une erreur
if ( ! isset( $_POST['job'] ) )
wp_die( __( 'Error: please fill the required field (job).' ) );
// si job dépasse 45 caractères (arbitraire) on affiche une erreur
elseif ( isset( $_POST['job'] ) AND strlen ( $_POST['job'] ) > 45 )
wp_die( __( 'Error: 45 maximum char. for "job" field.' ) );
return $commentdata;
}
}
Une fois la donnée obligatoire contrôlée, nous enregistrons les données du commentaire :
add_action( 'comment_post', 'juiz_save_comment_data' );
if ( !function_exists('juiz_save_comment_data') ) {
function juiz_save_comment_data( $comment_id ) {
// définition de la durée de vie des cookies
$comment_cookie_lifetime = apply_filters('comment_cookie_lifetime', 30000000);
if (isset($_POST['job'])) {
// on enregistre l'info en base de données
add_comment_meta( $comment_id, 'job', esc_html( $_POST['job'] ) );
// on enregistre un cookie
setcookie('comment_author_job_' . COOKIEHASH, esc_html( $_POST['job'] ), time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN);
}
// on vérifie que le champ gender respecte les valeurs prévues
if (isset($_POST['gender']) AND in_array ( $_POST['gender'] , array('male', 'female'))) {
// même schéma que précédemment
add_comment_meta( $comment_id, 'gender', esc_html($_POST['gender']) );
setcookie('comment_author_gender_' . COOKIEHASH, esc_html( $_POST['gender']), time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN);
}
}
}
Le cookie est optionnel mais il permet de reproduire le comportement de WordPress qui ajoute un cookie par champ du formulaire de commentaire pour se souvenir des données entrées par le visiteur.
En l’état, nous avons ajouté les infos en base de données, nous avons créé des cookies, et nous avons pris soin, dans l’étape précédente, de récupérer ces cookies grâce à la fonction wp_get_current_commenter()
. Sauf qu’en fait cette fonction récupère uniquement les cookies pour les champs « classiques » (Nom, url, e-mail). Il faut donc compléter cette fonction pour l’inviter à piocher dans nos cookies fraichement créés :
add_filter('wp_get_current_commenter', 'juiz_add_custom_comment_cookies');
function juiz_add_custom_comment_cookies($cookies) {
$comment_author_job = '';
if ( isset($_COOKIE['comment_author_job_'.COOKIEHASH]) )
$comment_author_job = $_COOKIE['comment_author_job_'.COOKIEHASH];
$comment_author_gender = '';
if ( isset($_COOKIE['comment_author_gender_'.COOKIEHASH]) )
$comment_author_gender = $_COOKIE['comment_author_gender_'.COOKIEHASH];
$cookies['comment_author_job'] = $comment_author_job;
$cookies['comment_author_gender'] = $comment_author_gender;
return $cookies;
}
La variable $cookies
est un tableau associatif (clé + valeur), dont la clé est le nom du cookie (sans le _cookiehash
) et la valeur est la valeur du cookie que l’on récupère s’il existe.
Maintenant il faut afficher ces informations dans notre liste de commentaire !
Afficher les données personnalisées dans la liste de commentaires
Cette dernière étape permet d’afficher les informations dans la liste de commentaires. Il existe un certain nombre de hooks qui permettent d’intervenir sur des zones précises d’un commentaire. Je vais en utiliser deux ici qui sont : get_comment_author_link
et get_avatar
.
Je souhaite afficher le job à côté du nom de l’auteur d’un commentaire.
add_filter( 'get_comment_author_link', 'juiz_attach_custom_info_to_comments_list' );
if ( !function_exists('juiz_attach_custom_info_to_comments_list') ) {
function juiz_attach_custom_info_to_comments_list( $author ) {
// on récupère l'info job
$job = get_comment_meta( get_comment_ID(), 'job', true );
// si l'info existe, on l'ajoute entre parenthèse après l'auteur
if ( $job )
$author .= ' (' . $job . ')';
// on retourne l'info
return $author;
}
}
La variable $author
contient le code HTML qui affiche le nom de l’auteur (avec ou sans lien vers son site). On ne fait donc que rajouter du contenu à la suite de cette chaine.
Cette technique a l’avantage d’ajouter l’information également dans le widget qui traite des derniers commentaires postés.
Pour afficher la valeur de gender, j’aurais très bien pu faire la même chose en ajoutant l’information à la suite après l’avoir récupérée avec get_comment_meta()
. Mais comme j’aime bien me compliquer la vie, j’ai décidé d’ajouter une classe autour de l’avatar de l’utilisateur.
add_filter ( 'get_avatar', 'juiz_attach_custom_gender_to_avatar');
if ( !function_exists('juiz_attach_custom_gender_to_avatar') ) {
function juiz_attach_custom_gender_to_avatar( $avatar ) {
$gender = get_comment_meta( get_comment_ID(), 'gender', true );
$gender = $gender ? $gender : 'undefined';
$avatar = '<span class="gender ' . $gender . '">' . $avatar . '</span>';
return $avatar;
}
}
La variable $avatar
contient le code HTML de l’avatar de l’utilisateur, une simple image par défaut. Ici on englobe l’avatar d’un élément span
porteur du classe gender
ainsi que d’une classe dynamique qui peut être male
, female
ou undefined
en fonction de l’info que l’on récupère en base de données.
Et voilà, c’est tout pour cette longue astuce, pour le reste c’est à vous d’imaginer.
Option bonux 1 : éditer un champ existant
En restant dans le premier hook (comment_form_defaults
) il est possible d’éditer les champs existants en les manipulants avec des expressions régulières, ou en les réécrivant :
$default['fields']['author'] = '
<p class="comment-form-author">
<label for="author">'. __('Name') . '</label>
<span class="required">*</span>
<input id="author" name="author" value="'.$commenter['comment_author'].'" placeholder="Votre nom ou pseudo" aria-required="true" size="30" type="text" />
</p>
';
Ici je rajouter un attribut placeholder
par exemple.
Inutile de changer quoi que ce soit dans le traitement des données, WordPress le prévoit déjà.
Merci à Nicolas pour la suggestion.
Option bonux 2 : redirection après un commentaire
J’ai croisé dans le cœur de WordPress le hook comment_post_redirect
qui permet de choisir la page de redirection lorsqu’un utilisateur a posté un commentaire.
Par défaut cette page redirige vers le commentaire de l’utilisateur avec une ancre.
Voici comment la fonction se présente :
add_action('comment_post_redirect', 'juiz_new_comment_redirection');
if ( !function_exists('juiz_new_comment_redirection') ) {
function juiz_new_comment_redirection( $location ) {
// valeur par défaut donnée par WordPress
// à vous de personnaliser $location en fonction de vos besoins
$location = empty($_POST['redirect_to']) ? get_comment_link($comment_id) : $_POST['redirect_to'] . '#comment-' . $comment_id;
return $location;
}
}
Option bonux 3 : le code complet
Pour ceux qui ont peur d’avoir raté une étape :
// ajout physique d'un champ
add_filter( 'comment_form_defaults', 'juiz_manage_default_fields');
// $default contient tous les messages du formulaire de commentaire
// il contient également "comment_field", le textarea du message
if ( !function_exists('juiz_manage_default_fields')) {
function juiz_manage_default_fields( $default ) {
$commenter = wp_get_current_commenter();
// Suppression d'un champ par défaut parmi : author, email, url
//unset($default['fields']['url']);
// Ajout des champs dans le tableau "fields"
$default['fields']['job'] = '<p class="comment-form-job comment-form-author">
<label for="job">'. __('Your job') . '</label>
<span class="required">*</span>
<input id="job" name="job" aria-required="true" size="30" type="text" value="' . esc_attr($commenter['comment_author_job']) . '" />
</p>';
$sel_female = $sel_male = '';
if ( $commenter['comment_author_gender'] != '') ${'sel_' . $commenter['comment_author_gender']} = ' checked="checked"';
$default['fields']['gender'] = '<p class="comment-form-gender">
<span class="label_like">'. __('Your gender') . '</span>
<label for="female">F</label> <input id="female" '. $sel_female .' name="gender" value="female" type="radio" />
<label for="male">M</label> <input id="male" '. $sel_male .' name="gender" value="male" type="radio" />
</p>';
// On retourne le tableau des champs
return $default;
}
}
// controle des champs obligatoires à l'enregistrement
add_filter( 'preprocess_comment', 'juiz_verify_comment_data' );
if ( !function_exists('juiz_verify_comment_data') ) {
function juiz_verify_comment_data( $commentdata ) {
if ( ! isset( $_POST['job'] ) )
wp_die( __( 'Error: please fill the required field (job).' ) );
elseif ( isset( $_POST['job'] ) AND strlen ( $_POST['job'] ) > 45 )
wp_die( __( 'Error: 45 maximum char. for "job" field.' ) );
return $commentdata;
}
}
//ajout en base de données des champs
add_action( 'comment_post', 'juiz_save_comment_data' );
if ( !function_exists('juiz_save_comment_data') ) {
function juiz_save_comment_data( $comment_id ) {
$comment_cookie_lifetime = apply_filters('comment_cookie_lifetime', 30000000);
if (isset($_POST['job']) AND strlen ($_POST['job']) < 45) {
add_comment_meta( $comment_id, 'job', esc_html( $_POST['job'] ) );
setcookie('comment_author_job_' . COOKIEHASH, esc_html( $_POST['job'] ), time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN);
}
if (isset($_POST['gender']) AND in_array ( $_POST['gender'] , array('male', 'female'))) {
add_comment_meta( $comment_id, 'gender', esc_html($_POST['gender']) );
setcookie('comment_author_gender_' . COOKIEHASH, esc_html( $_POST['gender']), time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN);
}
}
}
// pour que get_commenter retourne nos cookies custom
add_filter('wp_get_current_commenter', 'juiz_add_custom_comment_cookies');
function juiz_add_custom_comment_cookies($cookies) {
$comment_author_job = '';
if ( isset($_COOKIE['comment_author_job_'.COOKIEHASH]) )
$comment_author_job = $_COOKIE['comment_author_job_'.COOKIEHASH];
$comment_author_gender = '';
if ( isset($_COOKIE['comment_author_gender_'.COOKIEHASH]) )
$comment_author_gender = $_COOKIE['comment_author_gender_'.COOKIEHASH];
$cookies['comment_author_job'] = $comment_author_job;
$cookies['comment_author_gender'] = $comment_author_gender;
return $cookies;
}
// afficher l'info job dans la liste des commentaires
add_filter( 'get_comment_author_link', 'juiz_attach_custom_info_to_comments_list' );
if ( !function_exists('juiz_attach_custom_info_to_comments_list') ) {
function juiz_attach_custom_info_to_comments_list( $author ) {
$job = get_comment_meta( get_comment_ID(), 'job', true );
if ( $job )
$author .= ' (' . $job . ')';
return $author;
}
}
// afficher l'info gender graphiquement pas loin de l'avatar
add_filter ( 'get_avatar', 'juiz_attach_custom_gender_to_avatar');
if ( !function_exists('juiz_attach_custom_gender_to_avatar') ) {
function juiz_attach_custom_gender_to_avatar( $avatar ) {
$gender = get_comment_meta( get_comment_ID(), 'gender', true );
$gender = $gender ? $gender : 'undefined';
$avatar = '<span class="gender ' . $gender . '">' . $avatar . '</span>';
return $avatar;
}
}
// redirection personnalisée après un post de commentaire
add_action('comment_post_redirect', 'juiz_new_comment_redirection');
if ( !function_exists('juiz_new_comment_redirection') ) {
function juiz_new_comment_redirection( $location ) {
$location = empty($_POST['redirect_to']) ? get_comment_link($comment_id) : $_POST['redirect_to'] . '#comment-' . $comment_id;
return $location;
}
}
L’espace de commentaire et là pour vous 😉
Cet article a une suite !
Sommaire
- WordPress – Personnaliser les champs du formulaire de commentaire
- WordPress – Des champs personnalisés dans l’administration des commentaires
Voici un beau tuto, particulièrement bien détaillé. Le fonctionnement du formulaire est finement désossé et permet de bien comprendre comment l’ensemble fonctionne. Récupération de l’existant, modification, sauvegarde et récupération des données, traitement des cookies, de nombreux aspects sont ici abordés, et on peut s’inspirer de leur traitement pour d’autres applications.
Merci pour ces éloges 🙂
Merci beaucoup pour tes contributions de qualités au web francophone, ça fais super plaisir. Merci 🙂
Super détaillé, merci beaucoup pour le tuto, ça va s’avérer utile.
Wow, c’est ce que j’appelle un tutoriel de qualité, je garde ça sous le coude, merci ! 🙂
Merci à vous ! 🙂
Merci pour ce tuto, qui est très proche de ce que je cherche, mais n’y répond malheureusement pas 🙂
Sur mon blog, j’aimerais proposer un commentaire par défaut que les visiteurs peuvent modifier a leur guise avant le de valider.
par exemple, j’aimerais afficher un tableau de multiplication (en html) et les visiteurs devront le compléter avant de le valider ou simplement tout supprimer pour ecrire un commentaire classique.
Bonjour Yann,
Dans la première partie de l’article, je mentionne la possibilité d’atteindre d’autres éléments du formulaire. Le champ textarea du formulaire en fait partie, il est atteignable à travers :
$default['comment_field']
Du coup en ajoutant ce morceau de code dans la toute première fonction présentée, ça devrait répondre à vos besoins.
Je donne souvent quelques pistes dans mes tutoriels qu’il vous appartient ensuite d’explorer pour aller plus loin 🙂
Bonne continuation.
Merci beaucoup pour votre « aide », enfin, la vous avez fait tout mon boulot 🙂
Merci beaucoup, un site de plus ajouté a mes favoris 🙂
Merci Yann.
Au plaisir 🙂
J’avoue être complétement perdu, j’utilise le thème Imbalance 2 avec WordPress MU, et impossible de mettre la main le moindre éléments, par exemple comment_form_defaults
Comment tu as procédé ?
Bonjour,
J’ai finalement réussi a mettre en place un nouveau commentaire par défaut sous forme HTML, j’avais mal placé ton code au sein de la page fonctions.php.
Pour info, j’ai du également rajouté le module CKEditor afin que mon code HTML soit affiché correctement dans le textarea.
Merci encore.
Hello,
Merci pour l’info et bonne continuation 🙂
Bonjour,
Je me permets de laisser un commentaire sur ce sujet pour tenter de résoudre un problème sur mon blog car je vois que vous parler ici de sauvegarde des données.
sur mon site des utilisateurs se plaignent de devoir réécrire à chaque fois leurs données dans les champs obligatoires tel que nom,e-mail,… de » laisser un commentaire « .
Dans réglage–discussion : J’ ai décoché la case » l’ auteur d’ un commentaire doit renseigner son nom et son adresse de messagerie » mais cela ne règle pas mon problème.
Me faut il utiliser une partie de votre code ou suis-je totalement hors-sujet.Je cherche une solution sur le net depuis un bon moment mais je ne trouve pas de solution.
Merci par avance
cordialement
arnaud
Bonjour,
Il est possible que vos utilisateurs aient désactivé l’enregistrement des cookies, ou les effacent à chaque nouvelle session de navigation.
Est-ce absolument systématique ? Avez-vous également le problème sur votre propre machine avec cookies activés ?
Je sais également que les thèmes ElegantThemes utilisent des templates personnalisés des formulaires de commentaire, il est possible que cela influe sur le comportement du formulaire. Il faudrait que je regarde la composition de ce thème.
Bonne fin de journée.
Il me semble également qu’ il y a conflit avec le template d’ elegant.
Merci pour ta réponse, je ne vais pas t’ ennuyer plus longtemps, je vais régler ça directement avec eux.
merci encore.
bye arnaud
Merci pour ce très bon tuto.
Mais n’est-il pas possible de personnaliser complètement le formulaire ?
Par exemple de pouvoir rajouter une class à la balise « form », pouvoir mettre un fieldset ou des div autour du bouton submit, ni même de mettre une class au bouton submit.
Bonjour Benjamin,
Il est possible de retravailler chacun des champs, donc de prévoir un fieldset par exemple, en jouant avec les premiers champs ainsi :
Ici ça permet de placer un fieldset pour l’ensemble des champs author, e-mail et url.
Pour la classe sur le formulaire je ne crois pas, mais il est possible de mettre une classe sur le parent du formulaire.
Je n’ai pas trouvé pour le reste également.
Bon week-end !
Ça reste de la bidouille mais ça marche. Merci pour ta réponse.
Espérons que WordPress fasse une mise à jour rapidement de ce côté la pour le reste.
Bon week-end à toi également.
Je ne pense pas que ce soit une des priorités de développement du cœur 🙂
Je viens de revérifier dans le template du formulaire dans le cœur de WordPress, il n’y a rien de prévu pour les éditions que tu demandes.
Bonne semaine !
Pour info j’ai trouvé une alternative à mon problème. J’ai utilisé jQuery pour ajouter ma class. C’est un peu lourd juste pour une class mais ça marche.
Merci encore pour t’es infos, et bonne semaine à toi également.
bonjour, j’aimerai savoir comment ajouter « laisser un commentaire » à coté de « 0 commentaires », j’ai essayé plusieurs modifications en vain. pouvez vous m’aider svp ?
Bonjour Émi,
Dans ton thème Yoko tu as deux endroits où cette information apparaît :
– le fichier content.php de ton thème (l’information se trouve ligne 16)
– le fichier comments.php de ton thème (ligne 26)
On dirait que tu as déjà essayé de modifier la ligne 26.
Essaye de remplacer à partir de la ligne 25 par :
Je ne sais pas exactement si c’est ça que tu recherches…
Bon courage.
merci beaucoup ! alors c’est déjà bien mais non je parle du lien sur lequel on clique juste quand on ne voit que l’article, à coté de la date de post de l’article etc et j’aurai voulu le placer en dessous de l’article comme sur skyrock blog. sauriez vous faire ça ?
y a t’il aussi moyen de retirer tous ces « yoko elmastudio » et compagnie ?
Hello,
Je te réponds oui dans les deux cas mais je ne pourrai t’expliquer que demain seulement, je n’ai pas accès aux fichiers d’où je poste.
Bonne soirée.
pas de problème ! merci j’attends c’est déjà très bien 🙂
Hello,
Désolé pour le retard, beaucoup de taff en ce moment.
Pour la mention de l’auteur, saches que l’auteur apprécie toujours un petit lien quelque part sur ton site. Si tu le retires du footer, je t’invite à le mettre dans une page du genre « mentions légales » ou « à propos ».
Il faut éditer le fichier
footer.php
en remplaçant :par
Concernant l’affichage du petit lien qui invite à commenter, ça se passe dans
content-single.php
, à la ligne où tu vois ça :juste après, rajoute ça :
Normalement ça devrait le faire.
Bon courage 😉
Bonsoir, merci beaucoup encore une fois ! pour le « laisser un commentaire » il faut avoir cliqué indépendamment sur l’article. moi j’aurai aimé juste en ayant cliqué sur « accueil » là ou il y a mes articles en avant et les récents le voir aussi « laisser un commentaire ». est ce que vous voyez ce que je veux dire ? désolée encore de vous embeter je suis exigeante !
merci d’avance.
pour l’auteur je l’ai mis dans le premier article
Merci pour l’auteur 🙂
Pour insérer le lien vers le formulaire de commentaire d’un article depuis la liste de la page d’accueil, il faut que tu modifies le fichier
content.php
, ligne 16, remplace :par
Voilà voilà 🙂
Puis si jamais tu utilises les autres types d’articles (liens, vidéos, etc.), tu devras peut-être aussi trouver les parties de code ressemblant dans les différents fichiers
content-*.php
.Bonne journée.
Très bon ce tuto ! grand merci. Je savais rajouter un champ pour twitter, grâce au tuto de grafikart. Mais là les checkbox, c’est top, ca me donne des idées 😉
Bonjour Geoffrey,
J’avoue être complètement perdu. J’utilise le theme Yoko.
Ma premiére question est : Quel est le fichier fonction.php que l’on doit modifier??? Celui du théme ou l’initial de WP.
Ma seconde question est : Quels bouts de code dois-je supprimer dans ma page fonction.php? Y a t’il un code initial à supprimer?
Troisiéme question : Lorque je colle juste le code en bout de la page fonction.php du thème j’ai les mêmes entrées du formulaire suivis des nouvelles entrées non codées avec le même CSS.
Je suis désolé j’ai bien conscience que je suis en dessous du niveau
Bonjour Quentin,
Ce n’est pas une question de niveau, il est fort probable que, par habitude du fonctionnement de WordPress, je ne sois pas suffisamment précis dans mes propos.
Lorsqu’on modifie une partie du fonctionnement de WordPress, on passe soit par un plugin, soit par un thème. Je ne vous demanderai jamais de modifier le cœur du CMS.
Donc oui il s’agit bien de modifier le fichier
functions.php
du thème Yoko (wp-content/themes/yoko/
).Il n’y a pas vraiment de morceau de code à supprimer, tout dépend de ce que tu souhaites obtenir au final en fait.
Dans le premier code que je fournis (qui est une fonction à prendre en l’état), je présente deux choses, la suppression d’un des champs existant :
Et l’ajout d’un champ :
L’ajout permet de placer des nouveaux champs à la suite des anciens (entre les champs existant et le champs de texte « commentaire »).
C’est ici qu’il faut composer le code HTML en calquant celui de ton thème Yoko afin que les styles du thème soient appliqués. Si malgré la copie de la structure HTML, les champs n’ont pas les bons styles, il te faudra utiliser un peu de CSS (en modifiant
style.css
).Bonne journée.
Intéressant. Je n’ai pas lu dans le détail mais même moi qui suis plus que novice en php et code, j’ai l’impression que le tutoriel est à ma portée. Je ne manquerai pas de m’y repencher dès que j’aurai un peu plus de temps. Merci.
Merci.
Si tu as des retours à faire au moment où tu te pencheras plus en détail sur son étude, je suis à l’écoute 😉
Bonne soirée.
Je n’y manquerai pas. Ca ne devrait plus tellement tarder (le projet dont il est question est un projet « pur plaisir », ce qui ne le met pas en priorité malheureusement).
J’espère que la réponse n’est pas déjà dans le texte (il ne me semble pas après avoir lu en diagonale) mais qu’en est-il des anciens commentaires (sur un blog pré-existant) lorsqu’on modifie le formulaire de commentaire en ajoutant une valeur obligatoire ? Par exemple, mettons que j’ajoute le genre en obligatoire. Les commentaires déjà présent n’ont pas cette information.
Normalement ça ne pose pas de problème puisque dans mes tests j’avais ajouté les différents champs un par un et plusieurs « versions » de commentaires cohabitaient.
Donc ça devrait aller. 🙂
Je te remercie pour cette réponse. Reste à lire le détail pour moi donc ;).
bonjour Geoffrey ,
merci pour ce tuto c’est exactement ce que je cherchais par contre je cherche aussi intégrer une liste déroulante dans un des champs et je n’y parviens pas…
cordialement
charly
Bonjour Charly,
Logiquement ça doit fonctionner de la même manière que pour le reste, il suffit de rajouter le champ comme pour « job » dans la première fonction :
Ensuite il est possible d’enregistrer et récupérer cette valeur de la même manière que les autres, en suivant l’exemple de « job » il suffira de remplacer « job » par « activity » si on en reste au code que je te propose ici.
Bon courage 🙂
Merci pour tout ça Geoffrey ,
j’avais fait une erreur de guillemet au niveau de la value…j’ai un peu honte 😉
bonne soirée
Félicitation,
Un très joli bon site
Merci bcp Geoffrey…ça marche super bien..:)….
merci votre message ma beaucoup aidez
bonjour,
comment faire pour enlever totalement le champ « commentaires » (la possibilité de laisser des commentaires et donc avoir 1 site qui est juste 1 portfolio)?
merci pour votre réponse.
Bonjour,
Cela se passe dans le menu Réglages > Discussion > « Autoriser les visiteurs à publier des commentaires sur les derniers articles » > Décocher.
Bonne journée 🙂
Bonjour, ça n’a pas fonctionné en décochant. Mais j’ai trouvé 1 solution en rajoutant (style= »display : none ») dans loop-single.php.
Par contre, je cherche aussi à agencer les galeries dans les posts. Les vignettes sont présentées en vertical avec de la marge avec 1 marge, et je voudrais les présenter en horizontal. exemple sur mon site > http://www.patfender.com/photos/masters-13-de-golf/
Je cherche dans le css mais je ne trouve pas. Auriez-vous 1 solution?
Merci
Bonjour,
Cela fonctionne forcément, c’est probablement parce que le contenu était existant avant la désactivation de cette option (l’indice est dans l’intitulé de l’option 😉 ).
Pour désactiver les commentaires sur les contenus (pages et articles) déjà publiés, il faut éditer le post concerné et décocher la case dans « discussion ».
Concernant votre problème de mise en page, vous comprendrez que je ne peux pas proposer un service de débogage à tous mes lecteurs. La création de template WordPress est un travail : Studio Web. Mais la solution se trouve sur ce blog (recherche : « display inline-block »).
Merci.
Bonjour Geoffrey,
A tout hasard : Connaissez-vous une soluce sans plugins pour stocker les données d’un formulaire dans la base de donnée ?
Je crois que le salut vient de $wpdb, mais pour maitriser ce truc propriétaire, j’en bave un peu (je trouve plus simple de maitriser le standard PDO, mais ce n’est pas compatible avec WP). Comme plugins, il existe une extension pour Contact Form 7 : « Contact Form 7 to Database Extension », mais ce n’est pas mon but…
Bonsoir Olivier,
Tu peux me tutoyer tu sais 🙂
Je ne connais pas d’autre technique que l’utilisation de la classe wpdb. Elle n’est pas si complexe que cela (pourtant je ne suis pas développeur) et est plutôt bien documentée : http://codex.wordpress.org/Class_Reference/wpdb
Elle permet de se greffer en toute sécurité sur les noms variables des tables de la base de données.
Bon courage 🙂
Bon, et bien je n’ai plus qu’à m’y coller!
Merci beaucoup pour ce tuto exhaustif. Il existe une multitude de plugins wordpress qui gèrent les formulaires personnalisés aujourd’hui, mais je rechignais à m’embarquer dans une usine à gaz (configuration front+back avec des lignes de code pas toujours « vérifiables »).
Ton article va me permettre de le faire DIY-style !
Bonjour,
il y a là toutes les réponses aux questions que je me pose et plus encore traitées avec brio !!!
mais , débutant , je ne trouve pas dans fonction.php la partie à modifier.
je souhaite supprimer la demande ’email’
mais rien à faire je ne sais que fichier éditer je suis sous le dernier wordpress
Merci très fort
Bonjour,
Vous pouvez facilement trouver la réponse à cette question dans les commentaires plus au du vôtre.
Indice : Il faut utiliser la fonction
unset();
sur le bon champ.Merci
enfin résolu grâce à vous !!!!
mon second but est de « figer » la page d’accueil pour mes ! écrits et de supprimer
le lien « déposer un commentaire »
qu ‘il n’apparaisse plus sur cette page .
Merci
Je pense que ça va désormais se passer dans les fichiers PHP de ton thème, au niveau des boucles.
Bon courage 😉
A propos de « Il commence à dater, lisez-le donc en gardant son âge en tête ! » est bien sache que ton article restera jeune car il est fait soigneusement on voit qu’il y a du travail derrière et beaucoup de motivation. je reviendrait dans 3 ans 😉
Merci du compliment 🙂
Disons que j’essaye de maintenir les astuces à jour, et si ça ne fonctionnait plus, j’espère que les lecteurs sauront y apporter contribution, au moins en me le mentionnant.
Au plaisir.
Bonsoir,
Félicitations pour ton tuto, remarquable ! Tout ce que j’aime. J’ai pu l’adapter sans problème à mes propres besoins et ça marche très bien. Merci !
Mais j’ai quelques questions cependant :
1/ Les champs ajoutés au tableau $default apparaissent dans le cas d’un contributeur non connecté au site. Comment procéder pour que des champs restent dispo dans le cas d’un utilisateur connecté au site ?
2/ Comment procéder aussi pour permettre une modification a posteriori d’une métadonnée ? Car là encore, quand on modifie depuis l’interface d’admin un commentaire, les métadonnées ajoutées sont absentes…
Merci par avance
Bonjour,
Je pense avoir trouvé une première réponse.
Les actions comment_form_logged_in_after et comment_form_after_fields semblent ajouter des champs pour respectivement les utilisateurs déjà connectés et les utilisateurs non connectés.
Elles devraient donc permettre de compléter comment_form_defaults pour ajouter des champs selon les circonstances.
Je vais tester ça.
D’acc, tu nous tiendras au courant ?
Thanks.
Merci beaucoup Geoffrey…ça marche super bien.
Bonjour,
Tout d’abord merci pour ce tuto, il est vraiment très clair !
Cependant, je n’arrive pas à résoudre mon problème… Je cherche à insérer deux fonctions liées à des plugins juste dessous (ou dessus) du textarea.
Après une nuit et une matinée de réflexion et de tests, j’en viens à comprendre que les fonctions semblent s’exécuter avant le formulaire…
Lorsque je marque du texte simple il apparaît au bon endroit mais dès que j’ajoute ma fonction, ça apparaît tout au dessous de la zone des commentaires (avant la div id « respond »).
Comment pourrais-je faire pour placer le résultat de mes fonctions à l’endroit que je souhaite ?
Voici le bout de code pour mieux comprendre :
Ceci affiche « Smileys : » au bon endroit (entre le textarea et le bouton submit) mais ma fonction se retrouve avant « Laissez un commentaire ».
Merci d’avance !
Bonjour,
Il est fort probable que la fonction
cs_print_smilies()
fasse unecho
en fin de fonction.Du coup au lieu d’enregistrer son contenu dans la variable
$smileys
, tu affiches directement son contenu dès son appel.Il faudrait que tu remplaces
echo
(ouprint
) en fin de fonction, par le motreturn
.Bon courage.
Oh merci beaucoup !!!!
Mon cerveau et mes yeux commençaient à exploser, mais tu m’as sauvé la vie ! 😀
Bon, je ne voulais pas toucher au code des plugins (au cas où il y a une maj) mais s’il n’y a qu’un mot à changer, tant pis. 🙂
Encore merci !
Re,
Si tu ne veux pas toucher au plugin, tu peux faire ceci au niveau de ta personnalisation dans functions.php :
Bonne continuation.
Ah punaise, c’était pile ce qu’il me fallait !
Encore merci, tu m’as évité un horrible pétage de câble. 🙂
Bonjour
Je me mets à wordpress, et j’ai une petite question. Je cherche une extension style « contact form 7 » mais qui pourrait activer ou désactiver des champs du formulaire selon que l’on coche le profil « entreprise » ou « particulier » en début de formulaire.
et te remerciant
Jeremy
Hello Jeremy,
Je ne sais pas si tu as remarqué mais ton commentaire n’a rien à voir avec l’article…
Contact Form 7 peut très bien servir à ce que tu me décris, il faut cependant avoir quelques connaissances en JS pour le mettre en oeuvre.
Autrement non, je ne connais pas cela. Peut-être du côté de Gravity Forms, mais je ne peux pas te l’assurer.
Bonne continuation !
Bonjour,
Moi je voulais mettre un compteur de mots, pour exiger un minimum dans le commentaires.
C’était bien, mais le script n’est pas complet, car une fois que le commentaire est envoyer il envoie une erreur sur le code Captcha.
même si je donne la bonne réponse, il me renvoie une erreur de réponse, donc j’ai préférer garder que le Captcha.
Alicia M.
Comment on fait pour enlever le lien Connecté en tant que
Bonjour,
Quel thème utilisez-vous ?
Bonjour,
comment fait-on quand on veux juste modifier et personnaliser le texte LAISSER UN COMMENTAIRE ?
Merci par avance
Gérald
Bonjour Gérald,
Théoriquement ce n’est pas bien compliqué mais il existe plusieurs méthodes dépendantes de votre thème et version de WordPress. Si vous me donnez ces informations il y a peut-être moyen que je réponde plus précisément 🙂
Merci
Bonjour,
j’ai un souci: certains visiteurs se plaignent de ne pas pouvoir laisser de commentaires parce que rien n’indique ce qu’il faut inscrire dans les cases. Or quand je vérifie, les mentions sont présentes (nom, adresse mail et site web). D’où cela peut-il venir?
Merci à ceux qui pourront m’aider.
Yann
Bonjour,
Tu as fait l’erreur classique de remplacer les label par des placeholder. Sauf que ces placeholder ne fonctionnent par sur Internet Explorer 7, 8 et 9 par exemple.
Tes labels doivent toujours être présents dans le code HTML !
Bonne soirée.
merci pour ta réponse. je n’ai rien fait du tout, peut-être est-ce le thème qui a fait ça, je suis bien incapable de jouer à ça. Où puis-je retrouver ces labels?
bonne soirée
ça y est j’ai trouvé, je vais me coucher un tout petit peu moins c. ce soir
grand merci pour ton aide
Pardon 🙂
Comme ton commentaire fait suite à l’article, je pensais que tu t’étais essayé aux modifications du formulaire.
Bravo si tu as trouvé la solution !
J’ai exactement le même problème sauf que je n’ai pas trouvé la solution, si tu avais une idée de comment tu as fais pour changer ça, ça serait top !
Merci d’avance !
À Marie il y a longtemps, j’ai un peu oublié, mais je pourrais retrouver, mon mail est shekinv@hotmail.com
Un gros merci pour la découverte de la fct add_comment_meta();
Hello Charlie 🙂
C’est un plaisir ! Bonne continuation.
Bonjour,
je ne sais pas si vous pourrez m’aider ou si même je pose la question au bon endroit mais je suis en train de m’arracher les cheveux 🙂
Je voudrais faire un textarea avec un compteur de mots pour que les internautes puissent savoir combien de mots font leurs annonces (c’est un site de petites annonces payantes selon le nombre de mots)
J’ai essayé avec plusieurs script mais cela ne fonctionne pas alors est-ce que je les place mal pourtant je les met dans le fichier header.php ou cela vient peut être de mon template.
Merci pour votre aide.
Bonjour Amélie,
Hélas je ne peux pas vous aider sans connaître le thème, et les scripts que vous avez essayé. Dans l’idéal une démo de la page web serait l’idéal.
Ah ben oui c’est logique.
J’utilise le thème directory
http://themeforest.net/item/directory-portal-wordpress-theme/3840053
J’ai utilisé différents script alors je sais plus trop mais le dernier est encore sur le site :
http://clindoeilmag.fr/wordpress/pourquoi-vous-payez-pour-passer-une-annonce/
Sachant que j’ai pas encore toucher la CSS du formulaire.
Merci de ton aide
Re,
Pas sûr de vouloir m’inscrire pour tester la fonctionnalité 🙂
J’ai vu que le thème charge du jQuery. Autant t’en servir pour faciliter le développement :
http://41mag.fr/tutoriel-un-compteur-de-mots-et-de-caracteres-comme-twitter-sur-un-champ-de-formulaire-textarea-en-jquery.html
Bon courage.
Re,
tu es pas obliger de t’inscrire en bas de la page au dessus de la zone de commentaire il y a le textarea (il ne se voit pas parce que j’ai pas touché au CSS encore)
J’avais déjà essayé avec le code que tu m’as passé mais ça me fait une erreur lors de la mise en ligne. Le thème est assez complexe.
Tu ne connaitrais pas un plugin pour compter les mots par hasard ? Je pense que je vais abandonner mdr
Ah mince j’avais pas vu. Désolé :p
En fait tu y étais presque, c’est juste un souci de concaténation de types différents je pense.
Essaye en mettant de code en fin de document :
Normalement ça devrait marcher, j’ai testé en live sur ton site.
Bonne continuation.
Merci merci merci merci merci merci. Ça fonctionne enfin grâce à toi merci merci merci merci. Tu peux pas savoir à quel point je te bénis maintenant 🙂
Ravis que cette solution te convienne 🙂
Bonne continuation !
Salut,
Merci pour ce tutoriel. La programmation n’a jamais été mon fort, mais depuis que je lance mon activité sur internet, je suis obligé de m’y frotter régulièrement. Je progresse donc (doucement mais sûrement, on va dire 😉 ).
En tout cas, c’est grâce à ce genre d’articles, bien écrit, complet et précis que l’on peut réellement progresser.
A bientôt,
Hugo.
Bonjour à tous,
de mon côté je rencontre un problème avec le thème Twenty Eleven et le module Gravity form, sur lequel j’ai plus les boutons ratio qui s’affichent et les case à cocher avez vous une idée ?
merci
jerome
Bonjour,
« plus les boutons radio qui s’affichent » signifie qu’ils se sont déjà bien affichés : quels boutons radio ? Quels page ? À quel moment ça marchait et à quel moment ça ne marchait plus ?
On ne connait pas l’historique du problème, pour vous aider l’idéal est d’être précis, très précis 🙂
Bon dimanche.
Merci,
Disons que j’avais pas fait de test avant mais en tous les cas les petits ronds et carrés ne s’affichent plus j’ai juste la ligne de texte et je ne sais pas si çà viens du thème ou du css du thème ou alors celui du gravity
Bonjour, merci bcp pour le tuto, même si je ne comprends pas encore tout, c’est déjà mieux.
J’utilise le thème twenty thirteen blue (enfin twenty thirteen) et je voudrais juste modifier la phrase « laisser un commentaire » par quelque chose de moins rigide.
Et bien impossible, je n’y arrive pas!!
Merci d’avance
Bonjour,
Pour modifier le titre ça se passe dans le fichier comments.php sur la fonction comment_form().
Il faut renseigner le paramètre
$args
avec quelque chose comme :$args(array('title_reply' => __('Laissez-moi un petit mot') ) );
Bon courage 🙂
Grr, ça a l’air simple pourtant mais j’avais déjà regardé dans comments.php sur le thème twenty thirteen Je ne trouve nulle part déjà la fonction comment_form mais encore moins args ni dans l’éditeur ni dans filezilla.
Je voulais aussi modifier « nom » par « pseudo »de la même façon dans les commentaires, je suis sûr que c’est au même endroit mais je ne trouve pas!!!
bonjour,
je cherche à paramétrer mon comments.php et je tombe sur ton tuto.
Si je l’utilise, pourrais-je supprimer l’obligation d’avoir et de remplir les champs « email » et « url » ?
de quelle manière ?
merci d’avance
Bonjour,
Je n’ai jamais tenté l’expérience, mais il faut regarder du côté de unset() qui est utilisé à l’une des lignes d’un des codes présentés sur cet article 🙂
Bon courage.
Peut-être un vieux poste mais toujours d’actualité. Merci!
bonjour,
merci pour le travail fournis on gagne beaucoup de temps par la suite grâce a des tuto de ce type la.
J’ai réaliser les différentes opérations avec succès. Mais jai 2 question.
1) Comment faire en sorte pour change rl’ordre d’affichage des champs. exemple: nom puis prénom puis interphone puis adresse mail.
2) je ne vois pas mes nouveaux champs de mon formulaire dans la partie dashboard du site en commentaire
Merci
selim,
Super tuto, merci !! Clair et concis …
En revanche j’aimerai savoir si il est possible de placer « job » en dessous du nom de l’auteur dans la liste des commentaires et de lui attribuer un profil css autre que celui de l’auteur, j’ai testé plein de choses mais rien à faire je n’y arrive pas …. Merci
Bonjour Erine,
J’ai pas eu de réponse a ma question et entre temps j’ai chercher puis trouver une solution intéressante.
Navré Selim, je n’avais pas fait attention à ton commentaire :/
Ton code HTML a sauté, il faut l’échaper, comme le petit message en bleu au dessus du formulaire de commentaire l’indique 🙂
Pour ta question 1) il y a la réponse dans l’article, il faut juste chercher un tout petit peu.
Pour la question 2), c’est effectivement un point que je n’ai pas abordé. J’en ferai probablement un article ultérieurement. En attendant tu peux peut-être regarder par là : http://shibashake.com/wordpress-theme/add-a-metabox-to-the-edit-comments-screen
Bonne journée.
Bonjour,
Merci beaucoup pour ce tutoriel qui me rend un grand service. Je suis désolé, j’ai lu et relu l’article plusieurs fois et je ne trouve pas comment on change l’ordre des champs ! Je suis un complet néophyte. J’essaye de comprendre ce que je peux mais quelque chose doit m’échapper…
Pareil pour le rendu « graphique » du genre, où et comment doit-on charger et configurer les images qu’on veut afficher en-dessous de l’avatar pour chaque option rentrée ?
Merci pour l’aide !
Bonjour Julien,
Bonnes questions, cependant elles demanderaient presque plusieurs tutoriels « de base » sur du PHP, du HTML et du CSS.
Pour faire simple, la variable qui « stocke » les différents champs est un tableau PHP. Voir du côté de la manipulation des tableaux sur Google 😉
Concernant l’affichage, je donne un exemple de code HTML généré très basique. Pour afficher des images ou des styles plus avancés, il faudra regarder les tutoriels en CSS de ce blog, ou une petite recherche sur Google pour vous permettre d’aller plus loin.
Navré je ne peux pas être plus précis 🙂
Bon courage !
Bonjour Erine,
Tu peux le faire simplement en HTML en remplaçant dans le code PHP :
par
Pour styler un commentaire différemment en fonction du type de job, le mieux c’est d’attribuer une classe dynamiquement au commentaire en question. Pour cela, WordPress prévoit la fonction get_comment_class() qui a son propre petit hook, on peut donc agir dessus avec quelque chose comme :
Je n’ai pas testé ce code, mais il devrait fonctionner 🙂
Bon courage.
Bonjour Geoffrey et merci pour ta réponse !
En fait je ne souhaite pas stylisé en fonction du job , je veux stylisé « job » différemment de « author » dans mon CSS …
Le nom de l’auteur est sur fond bleu sur mon site et je souhaiterai que le nom du job soit en dessous sur fond gris … Arghhh je ne sais pas si je suis très claire ….
Si tu as une solution je suis preneuse, je suis un peu une buse en php … il ne me manque que ce petit détail pour finaliser ma page ….
Ok je vois. (enfin, j’imagine)
Du coup ça devrait être plus simple. Sur le premier remplacement que je te proposais, il faut plutôt utiliser quelque chose comme :
Et un CSS dans le genre :
Styles à faire varier en fonction de tes besoins.
Bon courage.
Super merci c’est exactement ce qu’il me fallait !!
Arghhhhh une span class pourquoi n’y ai-je pas pensé …
Wow! C’est très élégant tout ça! Merci beaucoup de partager vos connaissances! 🙂
Bonjour Geoffrey,
merci pour ce tuto.
Je l’ai utilisé pour créer un champ ‘ville’ (obligatoire) dans les commentaires. (tout est OK)
J’ai créé une autre page sur mon site dans laquelle je souhaite reprendre tous les commentaires en reprenant aussi la ville. Pour cela, j’utilise un widget ‘BWP recent comment’ mais je n’arrive pas à reprendre la variable ‘ville’ pour l’éditer.
Peux-tu m’éclairer ?
Merci
Bonjour Thierry.
Hélas non, je ne peux pas te proposer de support pour un plugin. Je t’invite à contacter le créateur du plugin.
Bon courage.
whether the code can be used in blogspot ??
Thank you for share
No you can’t, this code is only for WordPress, as the section and article names make it think. I guess… :p
Good luck.
Bonjour Goeffrey,
J’ai un petit souci où je n’arrive pas à trouver la solution :
En suivant ton tuto, j’ai ajouté un champ (ville) que je souhaite obligatoire, mais quand je le teste, cela ne fonctionne pas. Si je le laisse vide, cela passe tout de même !?
Peux-tu m’aider ?
Voici ce que j’ai intégré :
Mon 2ème point, c'est que je souhaite pouvoir modifier ce même champ ville dans mon administration WP au niveau de chaque commentaire.
A ce jour, seuls les champs "nom", "email" et "adresse web" sont visibles et modifiables. Que faut-il faire pour rendre visible et modifiable dans l'interface WP le champ "ville" que j'ai ajouté ?
Merci de ton aide.
Hello,
Dans ta première condition de « // si ville est vide […] », si le champ
$_POST['ville']
est dans ta page, il est «set
« , donc la conditionisset()
retourne vrai.Du coup il faut vérifier en plus que le champ n’est pas vide.
Pour ton autre interrogation tu as cet article aussi :
http://www.creativejuiz.fr/blog/tutoriels/champs-personnalises-administration-commentaires
Bonne lecture.
Bonjour Geoffrey,
merci, mais cela ne fonctionne pas, cela me retourne une erreur (j’ai un blank screen).
Il semble que ’empty’ et ‘trim’ ne sont pas compatibles de cette manière.
As-tu une autre solution ?
Hello,
Bizarre pour trim()… mais essaye simplement sans, ça devrait marcher aussi.
Sinon copie-moi tout le code dans un PasteBin, ça sera plus facile à déboguer 🙂
Merci pour ce tuto!
Bonsoir Geoffrey,
je suis consciente du nombre d’années que cet article a été publié cependant je voudrais te remercié parce que cela m’a vraiment aidé!
Bonjour Geoffrey, comme dit précédemment ton article m’a été très utile cependant je rencontre un problème le champ que j’ai ajouté apparaît dans le cas d’un visiteur non connecté au site. Comment procéder pour que mon champs reste disponible dans le cas d’un utilisateur connecté au site ?
merci pour ta reponse
Bonjour,
et avant toute chose, merci pour ce tuto qui date un peu désormais c’est vrai mais qui continue même plusieurs années après, de toujours nous rendre service.
J’ai rajouté un champs de type « select » qui permet de choisir une page sur laquelle on souhaite réagir. En fait, je voudrais que l’utilisateur ne puisse commenter qu’à partir d’une seule page (appelons cette page « REAGIR ») et n’aurait donc qu’à sélectionner alors dans une liste, la page (qui correspond à un sujet) souhaitée parmi tant d’autres. jusqu’à là, c’est bon.
https://codepen.io/Marceau/pen/vYBRJaJ
C’est après que pour moi, ça se complique…
Le « select » doit donc récupérer l’ID de la page « SUJET » et la page « REAGIR » afficherait alors le commentaire avec le titre de la page SUJET (uniquement). Je voudrais en d’autres termes, modifier la valeur de l’ID récupérée par défaut ($post_id), pour récupérer celle de la page SUJET et l’afficher au moment de l’affichage des commentaires.
Merci de ton aide.
Hello Marceau,
Personnellement je regarderais du côté de get_comments()
$post->ID
à remplacer par l’identifiant de ta page. Pour cela je crois qu’il faut ouvrir les commentaires sur la page en question par contre.Bonjour,
Je cherche à créé sur mon site un système de commentaire comme celui ci
Serai-t-il possible de m’aider pour le développement ou bien de me rediriger vers un article ou un site qui explique comment faire?
Merci d’avance
Bonjour Jules,
Il s’agit d’un développement complètement custom de ma part, qui implique des changements dans WordPress sur les profils utilisateurs, sur le code HTML, mais aussi et surtout en CSS pour l’affichage.
Navré mais je n’ai pas ouvert le code source du blog, je le ferai peut-être à ma prochaine mise à jour de blog :p
Bonsoir Geoffrey moi j’ai plutôt un souci particulier. Ma sidebar des commentaires recent affiche plutôt les articles sur lesquels on a commenter au lieu d’afficher les commentaire. Comment gérer sa??? stp
Bonjour Mani,
Je vois sur ton site que le titre de l’article est affiché, suivi du commentaire. C’est le comportement normal de WordPress à ma connaissance.
Mais il y a ce plugin qui permet d’optimiser un peu l’affichage en proposant un Widget personnalisable.
https://wordpress.org/plugins/better-recent-comments/
Have fun.