当前位置: 首页 > 知识库问答 >
问题:

管理WooCommerce中的自定义结账字段

劳星晖
2023-03-14

您好,我有一个关于woocommerce中自定义结账字段的问题。我在结帐表单中创建了一个自定义字段,一切都很顺利。该字段包含客户卡号。我还设法将字段值(第一次输入时)保存在wp usermeta中,这样它就不会只与订单一起出现,而是与客户详细信息一起保存。

现在我想做以下几点。一旦注册客户返回商店,进入结帐表单,新字段(如果不是empyt)将自动显示,而不是每次都要求客户插入他们的卡号。

我添加到我的子主题函数的原始函数。用于在签出页面中显示自定义字段的php为:

  /**
 * Add the field to the checkout
 */
add_action ('woocommerce_after_order_notes', 'checkout_w55_card_number' );

  function checkout_w55_card_number( $checkout ) {

      echo '<div id="checkout_w55_card_number"><h2>' . __('N. tessera W55') . '</h2>';

      woocommerce_form_field( 'w55_card_number', array(
          'type'          => 'text',
          'class'         => array('w55-card-number-class form-row-wide'),
          'label'         => __('Inserisci n. tessera W55'),
          'placeholder'   => __('Inserisci numero'),
          ), $checkout->get_value( 'w55_card_number' ));
      echo '</div>';
}

因此,我试图以这种方式重新安排它,但它不起作用

add_action ('woocommerce_after_order_notes', 'checkout_w55_card_number' );

function checkout_w55_card_number( $checkout ) {
//extracts the value of the w55_card_number field
$w55_card = get_user_meta($user_id, 'w55_card_number', true);
//condition is the w55_card_number field is empty or not 
if ( !empty($w55_card) ) : echo $w55_card;      else :

          echo '<div id="checkout_w55_card_number"><h2>' . __('N. tessera W55') . '</h2>';

          woocommerce_form_field( 'w55_card_number', array(
              'type'          => 'text',
              'class'         => array('w55-card-number-class form-row-wide'),
              'label'         => __('Inserisci n. tessera W55'),
              'placeholder'   => __('Inserisci numero'),
              ), $checkout->get_value( 'w55_card_number' ));
          echo '</div>';
         endif;
   }

有什么建议吗?

共有1个答案

谭煜
2023-03-14

未定义user_id变量。你需要做到以下几点:

add_action ('woocommerce_after_order_notes', 'checkout_w55_card_number' );

function checkout_w55_card_number( $checkout ) {
    $user_id = get_current_user_id();
    $w55_card = '';
    if ($user_id) {
         //extracts the value of the w55_card_number field
         $w55_card = get_user_meta($user_id, 'w55_card_number', true);
    }
    //condition is the w55_card_number field is empty or not 
    if ( !empty($w55_card) ) : echo $w55_card;      
    else :
      echo '<div id="checkout_w55_card_number"><h2>' . __('N. tessera W55') . '</h2>';
      woocommerce_form_field( 'w55_card_number', array(
          'type'          => 'text',
          'class'         => array('w55-card-number-class form-row-wide'),
          'label'         => __('Inserisci n. tessera W55'),
          'placeholder'   => __('Inserisci numero'),
          ), $checkout->get_value( 'w55_card_number' ));
      echo '</div>';
     endif;

}

 类似资料:
  • 我有问题添加自定义结账字段到订单管理(也许电子邮件,我还没有)。撇开编码问题不谈,我主要遵循https://www.kathyisawesome.com/woocommerce-customize-checkout-fields/-到目前为止,这是我的代码: http://pastebin.com/y8LDcDxS 假设购物车中有一种产品,我让它根据产品数量添加$fields['extra_fie

  • WooCommerce自定义结账字段的插件有Custom Checkout Fields for WooCommerce等,如果你想要更多的自由,就用代码来解决吧。本文介绍一种用代码来自定义WooCommerce结账字段的方法。 WooCommerce自定义结账字段代码 代码单独保存一个文件引入,或直接放到子主题的functions.php中,第二种方式请将 defined('WPINC') or

  • 向结账表单添加WooCommerce自定义结账字段,可以使用插件WooCommerce checkout manager或者filter:woocommerce_checkout_fields,本文介绍的方法非上述两种,而是使用woocommerce_form_field()函数在订单备注之后添加自定义结账字段,并将字段显示在订单详情、订单邮件和后台中的方法。 2021年10月更新:WooComm

  • 我以这种方式在woocommerce文档后面的签出处添加了一个字段: 然后我想在“管理订单编辑”页面上以以下方式显示: 当我进入订单编辑页面时,我得到一个空值我不知道为什么,我只是按照留档,但它不工作,我怎么能得到存储在自定义结帐字段中的数据?

  • 我正试图在结帐时将定制费用计入订单总额。我在woocommerce中添加了一个复选框 包含一个自定义js文件,可用于处理事件 和一个php费用处理函数 由于某些原因,$_POST['state']的值没有被添加,当我给出一个硬编码值时,函数会工作,我尝试了很多选项,但无法让它工作。 我看过类似的帖子,但没有一个有答案。

  • 我正在尝试获取WooCommerce产品的自定义字段值,以显示在商店系统的不同页面上。我成功地对单个产品页面执行了此操作,但相同的代码不适用于购物车。 对于单个产品,我在函数中使用了此代码。php,它可以很好地工作: 我为购物车尝试了相同的代码,但这次值没有显示在页面上。我还提到了这个线程(获取自定义属性),将$post更改为$product,但仍然没有输出。。。 有什么建议吗?