我不知道我在这里做错了什么。我的代码看起来与this guy's完全相同(方法2,底部),但它不起作用。这是我的代码:
/** Change comment form title **/
function change_comment_fields($fields) {
if (isset($fields)) {
$fields["title_reply"] = "Leave a Comment";
var_dump($fields);
}
return $fields;
}
add_filter( 'comment_form_default_fields', 'change_comment_fields' );
add_filter( 'comment_form_field_comment', 'change_comment_fields' );
哪个var_dumps:
array(4) {
["author"]=>
string(207) "<p class="comment-form-author"><label for="author">Name <span class="required">*</span></label> <input id="author" name="author" type="text" value="" size="30" aria-required='true' required='required' /></p>"
["email"]=>
string(235) "<p class="comment-form-email"><label for="email">Email <span class="required">*</span></label> <input id="email" name="email" type="text" value="" size="30" aria-describedby="email-notes" aria-required='true' required='required' /></p>"
["url"]=>
string(125) "<p class="comment-form-url"><label for="url">Website</label> <input id="url" name="url" type="text" value="" size="30" /></p>"
["title_reply"]=>
string(15) "Leave a Comment"
}
所以好像数组正在被正确更改。 &#34;发表回复&#34;不会改变,但如果我设置了“网址”。而不是&#39; title_field&#39;,网址框将更改为&#34;发表评论&#34;。
然而,PHP仍在吐出这个:
Warning: Illegal string offset 'title_reply' in /home/<name>/public_html/<site>/wp-content/themes/baskerville-child/functions.php on line 14
string(113) "Lp class="comment-form-comment">
(第14行对应于我设置$ fields [&#34; title_reply&#34;]的地方。)
有什么想法吗? (您可以查看示例页面here。)
答案 0 :(得分:0)
所以我似乎没有意识到过滤器comment_form_field_comment
的作用。我错误地认为它是为未登录的访问者过滤评论表格。结果是过滤评论textarea文本,所以是的,它传递了一个字符串。我想因为var_dump打印了两个数组副本(我只包括一个),两个调用都接收到相同的数据。但仔细观察后,我发现数据不是重复的(一个是字段,另一个是标签),并且两个var_dump都是应用第一个过滤器的结果。
另外,我第一个(非警告产生)过滤器也是错误的。要更改标题,我需要使用comment_form_defaults
。