COMMENT_FORM_LOGGED_IN_AFTER和COMMENT_FORM_AFTER_字段有什么区别?

时间:2019-09-18 作者:Matthew Brown aka Lord Matt

This is a follow-up question to this one.

当连接到添加注释表单时,有两个挂钩可供使用:

“comment\\u form\\u logged\\u after”字段“comment\\u form\\u after\\u”字段假设第一个是针对登录用户的,第二个是针对非用户的,对吗?我还应该注意其他的区别吗?

为了让任何通过搜索引擎来到这里的人受益,请像我学习缓慢一样进行解释。

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

我是否正确地假设第一个是针对登录用户的,第二个是针对非登录用户的?

“一幅画胜过千言万语”;因此,请参阅并比较下面的示例输出/预览。(使用的主题是“2019”主题。)

1。comment_form_logged_in_after

您可以使用此挂钩在打开后添加内容<form> 标记,或者更准确地说,在通过comment_form_top 钩子-注释字段(即文本框)前会显示一些内容/textarea 用于输入注释文本/内容)。

这个钩子基本上是使用comment_form_top 钩住is_user_logged_in():

// Note that WordPress runs comment_form_top regardless the user is logged-in or not.
add_action( \'comment_form_top\', function () {
    if ( is_user_logged_in() ) {
        echo \'comment_form_top: is logged-in<br />\';
    } else {
        echo \'comment_form_top: not logged-in<br />\';
    }
} );

enter image description here

2。comment_form_after_fields

您可以使用此挂钩在表单中的最后一个字段和提交按钮之间添加内容-在下面的预览中,最后一个字段是“保存我的姓名、电子邮件…”下面的字段(即cookies同意)。

这个钩子类似于comment_form_before_fields 您可以使用它在表单的注释字段和名称字段之间添加内容。

因此,参考this answer, 这个add_my_custom_field_to_comment_form 函数连接到两个comment_form_logged_in_aftercomment_form_after_fields 这样,对于经过身份验证的用户和未经身份验证的用户,都会显示自定义字段。

原因:当用户未通过身份验证时,注释字段后会显示额外的表单字段。当用户通过身份验证时,默认情况下不会显示额外的表单字段。(额外表单字段是注释字段以外的字段;请参阅$fields.)

enter image description here

(注意,这个答案涵盖了WordPress中的默认行为。插件和主题可能会更改any ,例如使用CSS/JavaScript更改元素的位置/可见性等。)

以及评论表单的所有当前可用挂钩(即。comment_form()), 检查this.