Supprimer le champ «Site Web» des commentaires et des réponses?

8

Afin de lutter contre le spam dans les commentaires, je souhaite masquer ou supprimer le champ "Site Web" de la section "Laisser une réponse" pour les commentaires sur la page et le site.

Je n'ai aucune envie d'augmenter le classement des autres pages en les faisant intégrer leurs URL dans les commentaires de mes sites, ce qui semble être ce que 99% des commentaires sur mon site veulent faire.

J'utilise le thème Twenty Ten si cela fait une différence dans la réponse.

Merci!

cpuguru
la source
Pourquoi ne pas utiliser Akismet et / ou captchas?
Raphael

Réponses:

13

Créez un fichier wp-content/plugins/avec ce code:

<?php
/*
Plugin Name: Get Rid of Comment Websites
*/
function my_custom_comment_fields( $fields ){
  if(isset($fields['url']))
    unset($fields['url']);
  return $fields;
}

add_filter( 'comment_form_default_fields', 'my_custom_comment_fields' );

Normalement, je dirais de le mettre dans le fichier functions.php de votre thème, mais je ne recommanderais pas de le faire pour un thème qui pourrait être mis à jour comme Twenty Ten. De cette façon, vous pourrez ajouter cette fonctionnalité en tant que plugin qui peut être désactivé.

John P Bloch
la source
Cela a fait l'affaire, merci! A créé un dossier appelé "remove-url-field" et a créé un fichier à l'intérieur appelé "remove-url-field.php" puis est allé et a activé le plugin qui est apparu dans l'interface des plugins. Rapide et facile!
cpuguru
2
Pour les plugins simples comme ci-dessus, il n'est pas nécessaire de créer un dossier, un fichier autonome fonctionnera très bien .. (en fin de compte, c'est votre choix bien sûr, en soulignant simplement que ce n'est pas une exigence pour les plugins).
t31os
Est-ce vraiment le moyen le plus simple? Il semble étrange qu'il y ait des options dans l'administrateur pour "L'auteur du commentaire doit remplir le nom et l'e-mail" par exemple, mais pas pour masquer le champ Site Web.
DisgruntledGoat
Qu'est-ce qui est compliqué à ce sujet? Si vous ne voulez pas traiter avec FTP, je suis sûr que vous pourriez trouver quelque chose dans le repo des plugins qui ferait cela.
John P Bloch
1
@ MD004 La fermeture de la balise PHP n'est pas requise à la fin d'un fichier. Dans certains cas, cela peut même s'avérer préjudiciable, car certains éditeurs ajouteront en silence une nouvelle ligne à la fin du fichier, qui enverra la nouvelle ligne au navigateur en tant que première partie du corps de la réponse. Cela devient très mauvais lorsque vous devez envoyer des en-têtes personnalisés plus tard que le chargement des plugins, ou lorsque XML s'attend à ce que le texte correct soit le premier texte du document, pas une nouvelle ligne.
John P Bloch
0

Outre la bonne réponse de John, j'utilise une solution plus simple, qui me permet d'avoir plus de contrôle sur le formulaire de commentaire et ses champs.

Par défaut, votre thème comments.php( Twenty Eleven, par exemple ) peut avoir quelque chose comme ça -<?php comment_form(); ?>

Maintenant, l'utilisation <?php comment_form(); ?>est la même que:

<?php
    $args = array(
        'fields' => array(
                        'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .
                                        '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',
                        'email'  => '<p class="comment-form-email"><label for="email">' . __( 'Email' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .
                                        '<input id="email" name="email" type="text" value="' . esc_attr(  $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>',
                        'url'    => '<p class="comment-form-url"><label for="url">' . __( 'Website' ) . '</label>' .
                                        '<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" /></p>',
        );
    );
    comment_form( $args );
?>

La seule différence, AFAIK, est que la version plus longue vous donne plus de flexibilité. Comme dans votre cas, vous ne souhaitez pas afficher le champ du site Web. Donc, vous supprimez simplement le urlparamètre dans le fieldstableau, et le résultat final est le suivant:

<?php
    $args = array(
        'fields' => array(
                        'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .
                                        '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',
                        'email'  => '<p class="comment-form-email"><label for="email">' . __( 'Email' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .
                                        '<input id="email" name="email" type="text" value="' . esc_attr(  $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>',
        );
    );
    comment_form( $args );
?>

... c'est ce dont vous avez besoin.

Lecture recommandée: Référence de la fonction Codex WordPress / comment_form

Fichier source: (version du tronc - la plus récente)http://core.svn.wordpress.org/trunk/wp-includes/comment-template.php

c'est moi
la source
0

Pas une solution parfaite, les autres solutions sont bien

Au lieu de modifier PHP, le formulaire de commentaires, comment il ne s'agit que d'un seul champ de saisie, ce qui est là s'il est chargé et masqué, Au lieu d'écrire des ifinstructions ou rewritele formulaire de commentaires

masquez simplement le champ URL

.comment-form-url {
    display: none;
}
bhv
la source
0

La suppression du champ du site Web du formulaire de commentaire est assez facile. Voici le code avec seulement quelques lignes:

function cs_remove_comment_website_fields($fields) {
  unset($fields['url']);
  return $fields;
}
add_filter('comment_form_default_fields','cs_remove_comment_website_fields');

Source: Comment supprimer le champ du site Web du commentaire WordPress?

Faruque Ahamed Mollick
la source