cpuguru
  • 0
Новичок

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

  • 0

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

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

Я использую тему Twenty Ten, если это имеет значение в ответе.

Спасибо!

Share
  1. Почему бы не использовать Akismet и/или капчи?

    • 0
    • Это помогло — спасибо! Создал папку с именем «remove-url-field» и создал внутри нее файл с именем «remove-url-field.php», а затем пошел и активировал плагин, который появился в интерфейсе плагинов. Быстро и просто!

      • 0
    • Для простых плагинов, таких как приведенные выше, нет необходимости создавать папку, отдельный файл будет работать нормально.

      • 0
    • Это действительно самый простой способ? Кажется странным, что в админке есть опции, например, «Автор комментария должен указать имя и адрес электронной почты», но не скрыть поле «Веб-сайт».

      • 0
    • Что в этом сложного? Если вы не хотите иметь дело с FTP, я уверен, что вы можете найти что-то в репозитории плагинов, что сделает это.

      • 0
    • @MD004 MD004 Закрытие тега PHP не требуется в конце файла. В некоторых случаях это может даже оказаться вредным, так как некоторые редакторы молча добавляют новую строку в конец файла, который отправляет новую строку в браузер в качестве первой части тела ответа. Это становится очень плохо, когда вам нужно отправить пользовательские заголовки позже, чем загружаются плагины, или когда XML ожидает, что правильный текст будет первым текстом в документе, а не новой строкой.

      • 0
  2. Создайте файл 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. Этот способ позволит вам добавить эту функциональность в виде подключаемого модуля, который можно отключить.

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

    По умолчанию ваша тема 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 );
    ?>
    

    Единственная разница, насколько мне известно, в том, что более длинная версия дает вам больше гибкости. Как и в вашем случае, вы не хотите показывать поле веб-сайта. Итак, вы просто удаляете 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
  4. Не идеальное решение, другие решения в порядке

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

    просто скройте поле URL

    .comment-form-url {
        display: none;
    }
    
    • 0
  5. Удалить поле веб-сайта из формы комментариев довольно просто. Ниже приведен код, состоящий всего из нескольких строк:

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

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

    • 0

Оставить ответ

You must login to add an answer.