【问题标题】:How to add custom field in shipping method using woocommerce wordpress如何使用 woocommerce wordpress 在运输方式中添加自定义字段
【发布时间】:2021-11-16 23:36:55
【问题描述】:

如何使用 woocommerce wordpress在送货方式中添加自定义字段

请看我的截图

【问题讨论】:

  • 请与我们分享您到目前为止所做的尝试。
  • 我想添加送货方式描述和一个额外的送货日字段@Nilambar 见截图:i.stack.imgur.com/SqtPp.pngi.stack.imgur.com/J2TH4.png
  • 好的,要求很明确。请与我们分享您尝试实现的代码。你用的是哪个钩子。像这样。
  • @Nilambar 好的,这是 woo-commerce 的默认功能,我想添加自定义字段描述,而另一个字段知道了吗?
  • 到目前为止你尝试了什么?

标签: wordpress woocommerce


【解决方案1】:

请试试这个代码。

if ( ! function_exists( 'dimative_shipping_instance_form_fields_filters' ) ) {
    /**
     * Shipping Instance form add extra fields.
     *
     * @param array $settings Settings.
     * @return array
     */
    function dimative_shipping_instance_form_add_extra_fields( $settings ) {
        $settings['shipping_extra_field_title'] = array(
            'title'       => esc_html__( 'Shipping method title', 'zincheco' ),
            'type'        => 'text',
            'placeholder' => esc_html__( 'Please add shipping method title', 'zincheco' ),
            'description' => '',
        );

        $settings['shipping_extra_field_description'] = array(
            'title'       => esc_html__( 'Shipping method description', 'zincheco' ),
            'type'        => 'textarea',
            'placeholder' => esc_html__( 'Please add your shipping method description', 'zincheco' ),
            'description' => '',
        );

        return $settings;
    }

    /**
     * Shipping instance form fields.
     */
    function dimative_shipping_instance_form_fields_filters() {
        $shipping_methods = WC()->shipping->get_shipping_methods();
        foreach ( $shipping_methods as $shipping_method ) {
            add_filter( 'woocommerce_shipping_instance_form_fields_' . $shipping_method->id, 'dimative_shipping_instance_form_add_extra_fields' );
        }
    }
    add_action( 'woocommerce_init', 'dimative_shipping_instance_form_fields_filters' );
}

【讨论】:

  • 太棒了。它有效,但我怎样才能在我的运输方式标签上显示它?
【解决方案2】:

如果有人正在寻找如何使用 @Өлзийбат-Нансалцог 代码示例获取值。我能够以这种方式检索它:

//Get Shipping rate object
//$method->id is the ID of the shipping method. 
//In my case I used that in cart-shipping.php template
$WC_Shipping_Rate = new WC_Shipping_Rate($method->id); 

// Returned value is flat_rate:1
$shipping_rate_id = $WC_Shipping_Rate->get_id(); 

//Replacing : with underscore to have the id in format of flat_rate_1
$shipping_rate_id = str_replace(':', '_', $shipping_rate_id);

//Get the description field value
//Since the value is stored inside options table use get_option() method
get_option('woocommerce_'.$shipping_rate_id.'_settings')['shipping_extra_field_description']

【讨论】:

    【解决方案3】:

    这是获取值的代码。

    if ( ! function_exists( 'dimative_shipping_method_description' ) ) {
        /**
         * Function will print shipping method description.
         *
         * @param object $method Shipping method object.
         * @param int    $index Shipping method index.
         * @return void
         */
        function dimative_shipping_method_description( $method, $index ) {
            $dimative_method_fields       = get_option( 'woocommerce_' . $method->method_id . '_' . $method->instance_id . '_settings' );
            $dimative_method_allowed_html = array(
                'p'      => array(
                    'class' => array(),
                ),
                'strong' => array(),
                'b'      => array(),
                'a'      => array(
                    'href' => array(),
                ),
                'span'   => array(
                    'class' => array(),
                ),
            );
            // Shipping method custom description.
            if ( $dimative_method_fields['shipping_extra_field_description'] ) {
                ?>
                <div class="method-description"><?php echo wp_kses( $dimative_method_fields['shipping_extra_field_description'], $dimative_method_allowed_html ); ?></div>
                <?php
            }
        }
        add_action( 'woocommerce_after_shipping_rate', 'dimative_shipping_method_description', 1, 2 );
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      • 2017-10-17
      • 1970-01-01
      • 2022-11-02
      • 2017-11-05
      • 2019-07-17
      相关资源
      最近更新 更多