php - 如何在 Woocommerce 中获取运输方式自定义附加数据?

标签 php wordpress woocommerce settings shipping-method

从此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我不清楚如何获取此实例设置。
谁能提出解决方案吗?

最佳答案

WooCommerce 送货方式设置存储在 wp_options 表中的 option_name 列中,如下所示(其中 $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>';
    }
} 
?>

经过测试并有效。

关于php - 如何在 Woocommerce 中获取运输方式自定义附加数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66600659/

相关文章:

php - 如何使用表格对齐输入字段

php - MySQL + PHP : Pull down 1000 entries at a time, 递增到下一个 1000,重复

css - 如何将现有 Wordpress 菜单的样式更改为 float 和水平的?

php - 在 Woocommerce 的任何地方保存并显示特定的支付网关附加字段

php - 输入在 jQuery Mobile 中不起作用

php - 如何管理 if - else 在这里..

javascript - 页面重叠在页脚 div 上

wordpress - 在 gutenberg 编辑器中将类添加到父 .wp-block 元素

php - 在 woocommerce 产品属性中添加换行符

php - 在 WooCommerce 产品搜索小部件中设置最小字符数