Удалить поле «Сайт» из комментариев и ответов?

8

В целях борьбы со спамом в комментариях я хотел бы скрыть или удалить поле «Веб-сайт» из раздела «Оставить комментарий» для комментариев на странице и на сайте.

У меня нет желания повышать рейтинг других страниц за счет того, что они вставляют свои URL-адреса в комментарии моих сайтов, что, по-видимому, и хотят сделать 99% комментариев на моем сайте.

Я использую тему «Двадцать десять», если это что-то меняет в ответе.

Спасибо!

cpuguru
источник
Почему бы не использовать Akismet и / или капчу?
Рафаэль

Ответы:

13

Создайте файл wp-content/plugins/с этим кодом:

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

Обычно я бы сказал, поместите это в файл functions.php вашей темы, но я бы не рекомендовал делать это для темы, которая может обновляться как Twenty Ten. Этот способ позволит вам добавить эту функцию в качестве плагина, который можно отключить.

Джон П Блох
источник
Это добилось цели - спасибо! Создали папку с именем «remove-url-field» и создали внутри нее файл с именем «remove-url-field.php», а затем пошли и активировали плагин, который появился в интерфейсе плагинов. Быстро и просто!
cpuguru 22.10.10
2
Для простых плагинов, подобных вышеописанным, нет необходимости создавать папку, отдельный файл будет работать просто отлично (в конечном счете, это ваш выбор, конечно, просто отметив, что он не является обязательным для плагинов).
t31os
Это действительно самый простой способ? Кажется странным, что в администраторе есть варианты, например «Автор комментария должен указать имя и адрес электронной почты», но не скрывать поле «Веб-сайт».
Рассерженная шлюха
Что сложного в этом? Если вы не хотите иметь дело с FTP, я уверен, что вы могли бы найти что-то в репозитории плагинов, который бы сделал это.
Джон П Блох
1
@ MD004 Закрытие тега PHP не обязательно в конце файла. В некоторых случаях это может даже оказаться вредным, так как некоторые редакторы будут молча добавлять новую строку в конец файла, которая отправит новую строку в браузер в качестве первой части тела ответа. Это становится очень плохо, когда вам нужно отправлять пользовательские заголовки позже, чем загрузка плагинов, или когда XML ожидает, что правильный текст будет первым текстом в документе, а не переводом строки.
Джон П Блох
0

Помимо хорошего ответа Джона, я использую более простое решение, которое позволяет мне лучше контролировать форму комментария и его поля.

По умолчанию ваша тема comments.php(например, Twenty Eleven ) может выглядеть примерно так:<?php comment_form(); ?>

Теперь использование так <?php comment_form(); ?>же, как:

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

Единственное отличие, AFAIK, заключается в том, что более длинная версия дает вам больше гибкости. Как и в вашем случае, вы не хотите показывать поле сайта. Итак, вы просто удаляете urlпараметр в fieldsмассиве, и конечный результат таков:

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

... что вам нужно

Рекомендуемое чтение: Справочник по функциям WordPress Codex / comment_form

Исходный файл: (транковая версия - самая последняя)http://core.svn.wordpress.org/trunk/wp-includes/comment-template.php

это я
источник
0

Не идеальное решение, другие решения хороши

Вместо того, чтобы модифицировать PHP, форму комментариев, любую, как это только одно поле ввода, что там, если оно загружено и скрыто, вместо написания ifоператоров или rewriteформы комментариев

просто скрыть поле URL

.comment-form-url {
    display: none;
}
BHV
источник
0

Удалить поле сайта из формы комментариев довольно просто. Ниже приведен код с несколькими строками:

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

Источник: Как удалить поле сайта из комментария WordPress?

Фарук Ахамед Моллик
источник