【问题标题】:How to get Shipping Methods custom additional data in Woocommerce?如何在 Woocommerce 中获取运输方式自定义附加数据?
【发布时间】:2021-06-10 12:22:49
【问题描述】:

从这个comment,我在运输方式中创建了自定义字段“运输方式描述”:

add_action('woocommerce_init', 'shipping_instance_form_fields_filters');

function 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, 'shipping_instance_form_add_extra_fields');
    }
}

function shipping_instance_form_add_extra_fields( $settings ){
    $settings['shipping_method_description'] = [
        'title'       => 'Shipping Method Description',
        'type'        => 'text', 
        'placeholder' => 'shipping',
        'description' => ''
    ];

    return $settings;
}

但我不明白如何在我的自定义运输模板 (/cart/cart-shipping.php) 中的前端获取这些数据,例如:

<?php if ( $available_methods ) : ?>
    <?php foreach ( $available_methods as $method ) : ?>

        <p><?php /* Method Description ??? */ ?></p>

        <p><?= $method->get_label(); ?></p>
        <p><?= $method->cost; ?></p>

    <?php endforeach; ?>
<?php endif; ?>

这个comment 我不清楚如何获取此实例设置。
任何人都可以提出解决方案吗?

【问题讨论】:

    标签: php wordpress woocommerce settings shipping-method


    【解决方案1】:

    WooCommerce 送货方式设置存储在option_name 列的wp_options 表中,如下所示(其中$methods_id 是名称(slug),$instance_id 是数字标识符)

     $option_name = 'woocommerce_' . $methods_id . '_' . $instance_id . '_settings';
    

    要获得该运输方式设置(数组),您可以使用 WordPress get_option() 函数,例如:

    <?php 
    if ( $available_methods ) {
        foreach ( $available_methods as $rate ) {
            $data = get_option( 'woocommerce_' . $rate->method_id . '_' . $rate->instance_id . '_settings' ); 
    
            if ( isset($data['shipping_method_description']) ) {
                echo '<p>' . $data['shipping_method_description'] . '</p>';
            }
            echo '<p>' . $rate->label . '</p>';
            echo '<p>' . $rate->cost . '</p>';
        }
    } 
    ?>
    

    经过测试并且有效。

    【讨论】:

      猜你喜欢
      • 2021-05-04
      • 2022-11-02
      • 2017-12-23
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多