首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为客户添加文本输入字段,以便在单个WooCommerce产品页面上留下注释?

如何为客户添加文本输入字段,以便在单个WooCommerce产品页面上留下注释?
EN

WordPress Development用户
提问于 2019-03-19 20:22:24
回答 1查看 1.5K关注 0票数 0

我正在用WordPress,WooCommerce和一个叫做店面的主题来构建一个小的网络商店。我想添加客户端在产品页面本身上为产品供应商添加自定义注释的能力。

这张便条是可选的。它是有选择地刺绣一个个人信息的产品,一件衣服。

  • 我是否应该创建一个隐藏的WooCommerce字段来复制和粘贴数据到使用jQuery中?
  • 是否有任何支持WP或WooCommerce功能出现在脑海中?
EN

回答 1

WordPress Development用户

回答已采纳

发布于 2019-03-19 21:29:47

扩展WordPress和WooCommerce的最佳方法是使用钩子。要在产品区域添加自定义选项字段,可以使用以下钩子:

  • woocommerce_product_ Advanced :用于向高级选项卡中添加自定义字段
  • woocommerce_process_product:用于在数据库中保存/更新字段数据

在您的functions.php s.php上,您可以添加以下代码:

代码语言:javascript
复制
/* create a new product field*/
add_action( 'woocommerce_product_options_advanced', 'personalization_product_options_adv' );
function personalization_product_options_adv() {
    echo '';

    woocommerce_wp_textarea_input( array( 
        'id' => 'product_personalization_note',
        'value' => get_post_meta( get_the_ID(), 'product_personalization_note', true ),
        'label' => 'Personalization Note',
        'desc_tip' => true,
        'description' => 'Allow product personalization for select products',
    ) );

    echo '';
}

/* save & update the changes*/
add_action( "woocommerce_process_product_meta", "personalization_save_fields" );
function personalization_save_fields( $post_id ) {
    // grab the custom data from $_POST
    $product_personalization_note = isset( $_POST[ 'product_personalization_note' ] ) ? sanitize_text_field( $_POST[ 'product_personalization_note' ] ) : '';

    // grab the product
    $product = wc_get_product( $post_id );

    // save the custom data using WooCommerce built-in functions
    $product->update_meta_data( 'product_personalization_note', $product_personalization_note );

    //save
    $product->save();
}

/* display the new field on single product pages */
function woocommerce_custom_fields_display() {
  global $post;
  $product = wc_get_product($post->ID);
    $custom_fields_woocommerce_title = $product->get_meta('product_personalization_note');
  if ($custom_fields_woocommerce_title) {
      printf(
            '%s',
            esc_html($custom_fields_woocommerce_title)
      );
  }
}
add_action('woocommerce_before_add_to_cart_button', 'woocommerce_custom_fields_display');

要在WooCommerce发送的前端或电子邮件中检索这些数据,可以使用常规的到达_帖子_元()函数,如下所示:

代码语言:javascript
复制
$product_additional_note = get_post_meta( get_the_ID(), 'product_additional_note ', true );

来源:

票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/332099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档