如何在WordPress / WooCommerce 3 +

时间:2019-02-24 08:44:33

标签: php wordpress woocommerce custom-fields review

Example

我正在尝试在产品注释(WooComerce 3+)中添加“电话”字段。 *也适用于未注册的用户(访客)。 电话号码只能由管理员在管理面板中查看。

*“电话”字段需要输入“ 必需”。

我尝试使用此代码,但这不起作用:

function true_phone_number_field( $fields ) {
$fields['phone'] = '<p class="comment-form-phone"><label for="phone">Phone</label> <input id="phone" name="phone" type="text" value="" size="30" /></p>';
}
add_filter( 'comment_form_default_fields', 'true_phone_number_field');

3 个答案:

答案 0 :(得分:5)

<div class="wrapper">
  <div id="a">1</div>
  <div id="b">2</div>
  <div id="c">3</div>
  <div id="d">4</div>
  <div id="e">5</div>
  <div id="f">6</div>
  <div id="g">7</div>
  <div id="h">8</div>
  <div id="i">9</div>

</div>

//管理员列表中的列表

    // Add phone number field

    function add_review_phone_field_on_comment_form() {
        echo '<p class="comment-form-phone uk-margin-top"><label for="phone">' . __( 'Phone', 'text-domain' ) . '</label><span class="required">*</span><input class="uk-input uk-width-large uk-display-block" type="text" name="phone" id="phone"/></p>';
    }
    add_action( 'comment_form_logged_in_after', 'add_review_phone_field_on_comment_form' );
    add_action( 'comment_form_after_fields', 'add_review_phone_field_on_comment_form' );


    // Save phone number
    add_action( 'comment_post', 'save_comment_review_phone_field' );
    function save_comment_review_phone_field( $comment_id ){
        if( isset( $_POST['phone'] ) )
          update_comment_meta( $comment_id, 'phone', esc_attr( $_POST['phone'] ) );
    }

    function print_review_phone( $id ) {
        $val = get_comment_meta( $id, "phone", true );
        $title = $val ? '<strong class="review-phone">' . $val . '</strong>' : '';
        return $title;
    }

    // Print phone number - remove if not needed to show in front end
/*
    add_action('woocommerce_review_before_comment_meta', 'get_comment_phone' );
    function get_comment_phone($comment){
        echo print_review_phone($comment->comment_ID);
    }
*/

通过 WordPress 5.1 WooCommerce 3.5.5

进行了确定的测试

enter image description here

enter image description here

答案 1 :(得分:3)

您的代码应产生一个输入字段,但可能不会出现,因为您使用的comment_form_default_fields filter用于默认注释字段,如果您登录则将其隐藏。电话字段应在您之后显示。注销并查看产品评论。

此外,您没有提供任何用于将输入字段的值保存到数据库的逻辑。我认为this article可以帮助您自己实现此目标。

但是,当您使用advanced-custom-fields标记问题时,您可能希望跳过编码,而让Advanced Custom Fields plugin处理添加输入字段并将电话号码保存到数据库中。为此,只需下载并激活插件,转到“自定义字段”菜单,添加一个新的字段组,然后创建电话输入字段即可。确保查看“位置”元框并创建仅在Comment is equal to Product时显示字段组的规则:

ACF Location meta box

这将自动将您的字段组中的字段添加到产品的注释字段中。

答案 2 :(得分:0)

您必须在函数末尾返回名为“ fields”的变量。

function true_phone_number_field( $fields ) {
$fields['phone'] = '<p class="comment-form-phone"><label for="phone">Phone</label> <input id="phone" name="phone" type="text" value="" size="30" /></p>';

 return $fields;
}
add_filter( 'comment_form_default_fields', 'true_phone_number_field');