Loại bỏ các trang web trên mạng của Wikipedia khỏi nhận xét và trả lời?


8

Trong nỗ lực chống spam nhận xét, tôi muốn ẩn hoặc xóa trường "Trang web" khỏi phần "Để lại câu trả lời" cho nhận xét trang và trang web.

Tôi không muốn tăng thứ hạng trang của người khác bằng cách họ nhúng URL của họ vào nhận xét trang web của tôi, đó dường như là điều mà 99% ý kiến ​​trên trang web của tôi muốn làm.

Tôi đang sử dụng chủ đề Twenty Ten nếu điều đó tạo ra bất kỳ sự khác biệt nào trong câu trả lời.

Cảm ơn!


Tại sao không sử dụng Akismet và / hoặc captchas?
Raphael

Câu trả lời:


13

Tạo một tệp wp-content/plugins/với mã này:

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

Thông thường, tôi muốn nói hãy đặt nó vào tệp tin.php của chủ đề, nhưng tôi không khuyên bạn nên làm điều đó cho một chủ đề có thể cập nhật như Twenty Ten. Cách này sẽ cho phép bạn thêm chức năng này dưới dạng plugin có thể bị vô hiệu hóa.


Đó là một mẹo nhỏ - cảm ơn! Tạo một thư mục có tên "remove-url-field" và tạo một tệp bên trong nó có tên là "remove-url-field.php" và sau đó đi và kích hoạt plugin xuất hiện trong giao diện Plugins. Nhanh chóng và dễ dàng!
cpuguru

2
Đối với các plugin đơn giản như ở trên, không cần thiết phải tạo thư mục, một tệp độc lập sẽ hoạt động tốt .. (cuối cùng, đó là sự lựa chọn của bạn, tất nhiên, chỉ ra rằng nó không phải là một yêu cầu cho plugin).
t31os

Đây thực sự là cách đơn giản nhất? Có vẻ kỳ lạ là có các tùy chọn trong quản trị viên cho "Tác giả bình luận phải điền tên và e-mail", nhưng không được ẩn trường Website.
DisgruntledGoat

Điều gì là phức tạp về điều này? Nếu bạn không muốn giao dịch với FTP, tôi chắc chắn bạn có thể tìm thấy thứ gì đó trong repo bổ trợ sẽ làm điều này.
John P Bloch

1
@ MD004 Đóng thẻ PHP là không bắt buộc ở cuối tệp. Trong một số trường hợp, nó thậm chí có thể gây bất lợi, vì một số biên tập viên sẽ âm thầm nối thêm một dòng mới vào cuối tệp, sẽ gửi dòng mới đến trình duyệt như là phần đầu tiên của nội dung phản hồi. Điều này trở nên rất tệ khi bạn cần gửi các tiêu đề tùy chỉnh muộn hơn so với tải plugin hoặc khi XML mong muốn văn bản chính xác là văn bản đầu tiên trong tài liệu, không phải là một dòng mới.
John P Bloch

0

Ngoài câu trả lời hay của John, tôi sử dụng giải pháp thẳng hơn, cho phép tôi kiểm soát nhiều hơn đối với mẫu nhận xét và các lĩnh vực của nó.

Theo mặc định, ví dụ của chủ đề của bạn comments.php( ví dụ như Twenty Eleven ) có thể có một cái gì đó như thế này -<?php comment_form(); ?>

Bây giờ, sử dụng <?php comment_form(); ?>giống như:

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

Sự khác biệt duy nhất, AFAIK, là phiên bản dài hơn cho phép bạn linh hoạt hơn. Như trong trường hợp của bạn, bạn không muốn hiển thị trường trang web. Vì vậy, bạn chỉ cần loại bỏ urltham số trong fieldsmảng và kết quả cuối cùng là:

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

... đó là những gì bạn cần.

Đề nghị đọc: Tham khảo chức năng WordPress Codex / comment_form

Tệp nguồn: (phiên bản trung kế - mới nhất)http://core.svn.wordpress.org/trunk/wp-includes/comment-template.php


0

Không phải là một giải pháp hoàn hảo, các giải pháp khác đều ổn

Thay vì sửa đổi PHP, biểu mẫu nhận xét, bất kỳ cách nào nó chỉ là một trường đầu vào, có gì nếu nó được tải và ẩn, Thay vì viết các ifcâu lệnh hoặc rewritebiểu mẫu nhận xét

chỉ cần ẩn trường URL

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.