如何在不更改核心的情况下更改参数

时间:2020-05-07 作者:JoBe

如何在不编辑core的情况下更改core中指定的参数/文本?

例如,这是注释模板的一部分。wp中的php包含目录:

$fields = apply_filters( \'comment_form_default_fields\', $fields );

    $defaults = array(
        \'fields\'               => $fields,
        \'comment_field\'        => sprintf(
            \'<p class="comment-form-comment">%s %s</p>\',
            sprintf(
                \'<label for="comment">%s</label>\',
                _x( \'Comment\', \'noun\' )
            ),
            \'<textarea id="comment" name="comment" cols="45" rows="8" maxlength="65525" required="required"></textarea>\'
        ),
这是thingie的一部分,它显示注释表单并编写单词“Comment“位于文本字段上方。

现在,如果我想换个词CommentPlease leave a comment..., 我该怎么做?

我知道需要在函数中使用和放置某种挂钩。php文件,但我的知识到此为止,只需更改核心文件是一个很大的禁忌!

编辑:

在线2433(wp 5.4.2)

\'title_reply\'          => __( \'Leave a Reply\' ),
我只是把它改成;

        \'title_reply

\'          => __( \'\' ),
我只是不想表现出来。。

第2441行

\'label_submit\'         => __( \'Post Comment\' ),
将其更改为:

\'label_submit\'         => __( \' Submit your thoughts...\' ),
最后(几乎),第2531行

echo apply_filters( \'comment_form_logged_in\', $args[\'logged_in_as\'], $commenter, $user_identity );
将其更改为

echo apply_filters( \'comment_form_logged_in\', \'\' );
也不想显示此。。

在线2420

sprintf(
                \'<span id="email-notes">%s</span>\',
                __( \'Your email address will not be published.\' )
            ),
我一点也不想让人看到这个。。

这就是我之前改变核心评论的方式。php文件。

如何在函数中执行此操作。php

(它将影响以下页面:https://rainbowpets.org/rasmus/ )

2 个回复
最合适的回答,由SO网友:Antti Koskinen 整理而成

如果您进一步向下滚动注释模板。php文件中,您会注意到可以使用的下一个可用过滤器是comment_form_defaults. 使用此过滤器,您可以更改默认注释表单配置。

add_filter( \'comment_form_defaults\', \'filter_comment_form_defaults\' );
function filter_comment_form_defaults( $defaults ) {

  $defaults[\'comment_field\'] = sprintf(
        \'<p class="comment-form-comment">%s %s</p>\',
        sprintf(
            \'<label for="comment">%s</label>\',
            _x( \'Please leave a comment...\', \'Comment field label\', \'textdomain\' )
        ),
        \'<textarea id="comment" name="comment" cols="45" rows="8" maxlength="65525" required="required"></textarea>\'
    );

  return $defaults;
} 
但是您的(父)主题也可能对字段进行一些修改,以便覆盖默认值。所以只要继续向下滚动,你最终就会看到comment_form_fields 滤器这将过滤注释表单字段,包括textarea。

add_filter( \'comment_form_fields\', \'filter_comment_form_fields\' );
function filter_comment_form_fields( $fields ) {

  $fields[\'comment\'] = sprintf(
        \'<p class="comment-form-comment">%s %s</p>\',
        sprintf(
            \'<label for="comment">%s</label>\',
            _x( \'Please leave a comment...\', \'Comment field label\', \'textdomain\' )
        ),
        \'<textarea id="comment" name="comment" cols="45" rows="8" maxlength="65525" required="required"></textarea>\'
    );

  return $fields;
} 
如果您只想以注释字段为目标,那么在前面的过滤器下面,您可以在foreach循环中看到comment_form_field_comment 滤器

add_filter( \'comment_form_field_comment\', \'filter_comment_form_field_comment\' );
function filter_comment_form_field_comment( $field ) {

  return sprintf(
        \'<p class="comment-form-comment">%s %s</p>\',
        sprintf(
            \'<label for="comment">%s</label>\',
            _x( \'Please leave a comment...\', \'Comment field label\', \'textdomain\' )
        ),
        \'<textarea id="comment" name="comment" cols="45" rows="8" maxlength="65525" required="required"></textarea>\'
    );

} 
有关过滤器的更多详细信息,请参阅WP代码参考(链接)。

SO网友:Sanjay Gupta

是的,您可以自定义注释表单,而不影响核心文件。

您只需将注释表单的代码替换为注释中的以下代码。激活主题中的php。

$args = array(
    \'comment_field\' => \'<p class="comment-form-comment"><label for="comment">\' . _x( \'Please leave a comment...\', \'noun\' ) . \'</label><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p>\'
  \'fields\' => apply_filters( \'comment_form_default_fields\', array(

    \'author\' =>
      \'<p class="comment-form-author">\' .
      \'<label for="author">\' . __( \'Name\', \'domainreference\' ) . \'</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\', \'domainreference\' ) . \'</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\', \'domainreference\' ) . \'</label>\' .
      \'<input id="url" name="url" type="text" value="\' . esc_attr( $commenter[\'comment_author_url\'] ) .
      \'" size="30" /></p>\'
    )

);
comment_form( $args );