Rimozione del campo "Sito Web" da commenti e risposte?


8

Nel tentativo di combattere lo spam nei commenti, vorrei nascondere o rimuovere il campo "Sito Web" dalla sezione "Lascia una risposta" per i commenti sulla pagina e sul sito.

Non desidero aumentare il posizionamento di altre pagine facendogli incorporare i loro URL nei commenti sui miei siti, il che sembra essere ciò che il 99% dei commenti sul mio sito vuole fare.

Sto usando il tema Twenty Ten se questo fa la differenza nella risposta.

Grazie!


Perché non usare Akismet e / o captchas?
Raffaello,

Risposte:


13

Crea un file wp-content/plugins/con questo codice:

<?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' );

Normalmente, direi di inserirlo nel file Functions.php del tuo tema, ma non consiglierei di farlo per un tema che potrebbe essere aggiornato come Twenty Ten. In questo modo ti permetterà di aggiungere questa funzionalità come plugin che può essere disabilitato.


Questo ha funzionato, grazie! Creato una cartella denominata "remove-url-field" e creato un file al suo interno chiamato "remove-url-field.php" e poi ha attivato il plugin mostrato nell'interfaccia dei plugin. Facile e veloce!
cpuguru,

2
Per plugin semplici come quelli sopra non è necessario creare una cartella, un file autonomo funzionerà perfettamente. (Alla fine è ovviamente una tua scelta, sottolineando che non è un requisito per i plugin).
t31os,

È davvero il modo più semplice? Sembra strano che ci siano opzioni nell'amministratore per "L'autore del commento deve inserire nome ed e-mail" per esempio, ma non nascondere il campo del sito web.
DisgruntledGoat

Cosa c'è di complicato in questo? Se non vuoi avere a che fare con FTP, sono sicuro che potresti trovare qualcosa nel repository plugin che lo farebbe.
John P Bloch,

1
@ MD004 La chiusura del tag PHP non è richiesta alla fine di un file. In alcuni casi può persino rivelarsi dannoso, poiché alcuni editor aggiungeranno silenziosamente una nuova riga alla fine del file, che invierà la nuova riga al browser come prima parte del corpo della risposta. Ciò diventa molto grave quando è necessario inviare intestazioni personalizzate dopo il caricamento dei plug-in o quando XML prevede che il testo corretto sia il primo testo nel documento, non una nuova riga.
John P Bloch,

0

Oltre alla buona risposta di John, utilizzo una soluzione più semplice, che mi consente un maggiore controllo sul modulo di commento e sui suoi campi.

Per impostazione predefinita, il tuo tema comments.php( Twenty Eleven, per esempio ) potrebbe avere qualcosa del genere:<?php comment_form(); ?>

Ora, usare <?php comment_form(); ?>è uguale a:

<?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 );
?>

L'unica differenza, AFAIK, è che la versione più lunga offre maggiore flessibilità. Come nel tuo caso, non vuoi mostrare il campo del sito web. Quindi, rimuovi semplicemente il urlparametro fieldsnell'array e il risultato finale è questo:

<?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 );
?>

... che è quello che ti serve.

Lettura consigliata: riferimento funzione / codice commento WordPress Codex

File di origine: (versione trunk - la più recente)http://core.svn.wordpress.org/trunk/wp-includes/comment-template.php


0

Non è una soluzione perfetta, le altre soluzioni vanno bene

Invece di modificare PHP, modulo commenti, qualunque sia il modo in cui è solo un campo di input, cosa succede se viene caricato e nascosto, invece di scrivere ifdichiarazioni o rewriteil modulo commenti

nascondi semplicemente il campo URL

.comment-form-url {
    display: none;
}

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.