从评论和答复中删除“网站”字段?


8

为了与垃圾评论作斗争,我想隐藏或删除“留下回复”部分中的“网站”字段,以获取页面和网站评论。

我不希望通过让其他人在我的网站评论中嵌入他们的URL来提高其他人的网页排名,这似乎就是我网站上99%的评论想要做的事情。

如果答案有任何不同,我正在使用“二十十”主题。

谢谢!


为什么不使用Akismet和/或验证码?
拉斐尔

Answers:


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文件中,但我不建议您对可能会更新的主题(如“二十十”)进行此操作。通过这种方式,您可以将此功能添加为可以禁用的插件。


那成功了-谢谢!创建了一个名为“ remove-url-field”的文件夹,并在其中创建了一个名为“ remove-url-field.php”的文件,然后去激活了显示在“插件”界面中的插件。快捷方便!
cpuguru 2010年

2
对于像上面这样的简单插件,没有必要创建一个文件夹,一个独立的文件就可以正常工作。(当然,这最终由您选择,只是指出这不是插件的要求)。
t31os 2010年

这真的是最简单的方法吗?例如,管理员中有“评论作者必须填写姓名和电子邮件”选项,但没有隐藏“网站”字段,这似乎很奇怪。
DisgruntledGoat

这有什么复杂的?如果您不想使用FTP,我相信您可以在插件存储库中找到可以做到这一点的东西。
约翰·布洛赫

1
@ MD004在文件末尾不需要关闭PHP标记。在某些情况下,它甚至可能被证明是有害的,因为某些编辑器会在文件末尾静默添加换行符,这会将换行符发送到浏览器作为响应正文的第一部分。当您需要在插件加载之后发送自定义标头时,或者当XML期望正确的文本是文档中的第一个文本而不是换行符时,这变得非常糟糕。
John P Bloch

0

除了John的良好回答之外,我还使用了更直接的解决方案,该解决方案使我可以更好地控制评论表单及其字段。

默认情况下,您主题的主题comments.php例如21)可能具有以下内容:<?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;
}

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.