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

时间:2019-03-19 作者:hamburger

我正在使用WordPress、WooCommerce和一个名为Storefront的主题构建一个小网站。我想为客户添加在产品页面上为产品供应商添加自定义注释的功能。

注释是可选的。它可以选择性地在产品上绣上个人信息,一件衣服。

我是否应该创建一个隐藏的WooCommerce字段,以便使用jQuery将数据复制并粘贴到其中

1 个回复
最合适的回答,由SO网友:Cadu De Castro Alves 整理而成

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

  • woocommerce_product_options_advanced: 用于在“高级”选项卡中添加自定义字段woocommerce_process_product_meta: 用于在计算机上保存/更新数据库中的字段数据functions.php, 您可以添加以下代码:

    /* create a new product field*/
    add_action( \'woocommerce_product_options_advanced\', \'personalization_product_options_adv\' );
    function personalization_product_options_adv() {
        echo \'<div class="options_group">\';
    
        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 \'</div>\';
    }
    
    /* 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(
                \'<div><label>%s</label><input type="text" id="woocommerce_product_custom_fields_title" name="woocommerce_product_custom_fields_title" value=""></div>\',
                esc_html($custom_fields_woocommerce_title)
          );
      }
    }
    add_action(\'woocommerce_before_add_to_cart_button\', \'woocommerce_custom_fields_display\');
    
    要在前端或WooCommerce发送的电子邮件中检索此数据,您可以使用get_post_meta() 功能如下:

    $product_additional_note = get_post_meta( get_the_ID(), \'product_additional_note \', true );
    
    资料来源:

相关推荐

Custom term templates

所以,我在网上做了一些研究,但没有找到可靠的答案,所以我来了。我需要为特定类别创建自定义woocommerce类别页面。例如,我有一个类别叫做“Awesome”。而不是使用由短代码生成的常规类别页面[product_category category=\"something\"], 我想为自定义特定类别页面Awesome.我发现我需要编辑taxonomy-product_cat.php 但我不知道如何将其链接到名为awesome.换句话说,我正在考虑制作php文件的自定义副本,然后将其添加为主题templ