Menghapus Kolom “Situs Web” dari Komentar dan Balasan?

8

Dalam upaya memerangi spam komentar, saya ingin menyembunyikan atau menghapus bidang "Situs web" dari bagian "Tinggalkan Balasan" untuk komentar halaman dan situs.

Saya tidak punya keinginan untuk meningkatkan peringkat halaman orang lain dengan meminta mereka menyematkan URL mereka di komentar situs saya, yang sepertinya 99% dari komentar di situs saya ingin lakukan.

Saya menggunakan tema Twenty Ten jika itu membuat perbedaan dalam jawabannya.

Terima kasih!

cpuguru
sumber
Mengapa tidak menggunakan Akismet dan / atau captcha?
Raphael

Jawaban:

13

Buat file wp-content/plugins/dengan kode ini:

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

Biasanya, saya akan mengatakan memasukkannya ke file functions.php tema Anda, tetapi saya tidak akan merekomendasikan melakukan itu untuk tema yang dapat memperbarui seperti Twenty Ten. Dengan cara ini Anda dapat menambahkan fungsionalitas ini sebagai plugin yang dapat dinonaktifkan.

John P Bloch
sumber
Itu berhasil - terima kasih! Membuat folder yang disebut "remove-url-field" dan membuat file di dalamnya yang disebut "remove-url-field.php" dan kemudian pergi dan mengaktifkan plugin yang muncul di antarmuka Plugin. Cepat dan mudah!
cpuguru
2
Untuk plugin sederhana seperti di atas, tidak perlu membuat folder, file mandiri akan berfungsi dengan baik .. (akhirnya itu pilihan Anda tentu saja, hanya menunjukkan itu bukan persyaratan untuk plugin).
t31os
Apakah ini benar-benar cara paling sederhana? Tampaknya aneh bahwa ada opsi di admin untuk "Penulis komentar harus mengisi nama dan email" misalnya, tetapi tidak menyembunyikan bidang Situs web.
DisgruntledGoat
Apa yang rumit tentang ini? Jika Anda tidak ingin berurusan dengan FTP, saya yakin Anda dapat menemukan sesuatu di repo plugin yang akan melakukan ini.
John P Bloch
1
@ MD004 Menutup tag PHP tidak diperlukan di akhir file. Dalam beberapa kasus bahkan dapat terbukti merugikan, karena beberapa editor diam-diam akan menambahkan baris baru di akhir file, yang akan mengirim baris baru ke browser sebagai bagian pertama dari badan respons. Ini menjadi sangat buruk ketika Anda perlu mengirim tajuk ubahsuaian lebih lambat dari pada pemuatan plugin, atau ketika XML mengharapkan teks yang benar menjadi teks pertama dalam dokumen, bukan baris baru.
John P Bloch
0

Terlepas dari jawaban yang baik dari John, saya menggunakan solusi yang lebih lurus ke depan, yang memungkinkan saya lebih mengontrol formulir komentar dan bidangnya.

Secara default, tema Anda comments.php( Twenty Eleven, misalnya ) mungkin memiliki sesuatu seperti ini -<?php comment_form(); ?>

Sekarang, menggunakan <?php comment_form(); ?>sama dengan:

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

Satu-satunya perbedaan, AFAIK, adalah bahwa versi yang lebih panjang memberi Anda lebih banyak fleksibilitas. Seperti dalam kasus Anda, Anda tidak ingin menampilkan bidang situs web. Jadi, Anda cukup menghapus urlparameter dalam fieldsarray, dan hasil akhirnya adalah ini:

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

... yang kamu butuhkan.

Rekomendasi Bacaan: Referensi Fungsi Codex WordPress / comment_form

File Sumber: (versi trunk - terbaru)http://core.svn.wordpress.org/trunk/wp-includes/comment-template.php

ini aku
sumber
0

Bukan solusi sempurna, solusi lain baik-baik saja

Alih-alih memodifikasi PHP, formulir komentar, bagaimana pun itu hanya satu bidang input, bagaimana jika itu dimuat dan disembunyikan, Alih-alih menulis ifpernyataan atau rewriteformulir komentar

cukup sembunyikan bidang URL

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

Menghapus bidang situs web dari formulir komentar cukup mudah. Di bawah ini adalah kode dengan hanya beberapa baris:

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

Sumber: Bagaimana menghapus bidang situs web dari komentar WordPress?

Faruque Ahamed Mollick
sumber