Попытка получить поля доставки с созданным новым обычным полем - PullRequest
0 голосов
/ 30 апреля 2019

Я пытаюсь получить массив для всех форм доставки с новым пользовательским элементом, который я уже добавил.Этот код не работает:

$newObj = new WC_Checkout();
$shipping_fields = $newObj->get_checkout_fields($fieldset = 'shipping');

Woocommerce WC_Checkout методы:

Посетите https://docs.woocommerce.com/wc-apidocs/source-class-WC_Checkout.html#197-281 для получения дополнительной информации!https://superuser.com?

Я получаю NULL, поэтому объект не существует

Подробно:

Я разрабатываю веб-сайт, где общая цена рассчитывается в зависимости от доставкиПлощадь в каком-то городе.Я решил создать настраиваемое поле в форме доставки:

// Adding districts for the city of Lima on shipping form

add_filter('woocommerce_checkout_fields', 'custom_district_checkout_field');

function custom_district_checkout_field($fields) {
   //the list for this example was shortened
   $option_cities = array(
      ''            =>__('Select your district'),
      'chorrillos'  =>'Chorrillos',
      'miraflores'  =>'Miraflores'
};

$fields['shipping']['shipping_district']['type'] = 'select';
$fields['shipping']['shipping_district']['options'] = $option_cities;
$fields['shipping']['shipping_district']['class'] = array('update_totals_on_change');
$fields['shipping']['shipping_district']['input_class'] = array('wc-enhanced-select');

$fields['billing']['billing_district']['type'] = 'select';
$fields['billing']['billing_district']['options'] = $option_cities;
$fields['billing']['billing_district']['input_class'] = array('wc-enhanced-select');

wc_enqueue_js("jQuery( ':input.wc-enhanced-select' ).filter( ':not(.enhanced)' ).each( function() {var select2_args = { minimumResultsForSearch:5};jQuery( this ).select2( select2_args ).addClass( 'enhanced' );})");

return $fields;

Я могу подтвердить, что поле customme работает.С другой стороны, я пытаюсь изменить способ работы плагина WooCommerce Advance Shipping, как Джероен Сормани (который является разработчиком) объясняет в своих блогах:

Как работает плагин! и WAS Условия полей доставки

Идея состоит в том, чтобы добавить в список условий поля доставки, плагин по умолчанию показывает следующие поля: Расширенные поля доставки WC по умолчанию

Цель состоит в том, чтобы иметь возможность выбрать вновь созданное поле в условиях (например, «районы»), чтобы цена отображалась в корзине, когда пользователь выбирает правильную опцию, у плагина уже есть списокразные районы с их соответствующими ценами.Однако в плагине есть ошибка, потому что эта строка не работает (проверьте Github для условий полей WAS Shipping внутри первой функции:

$shipping_fields = WC()->checkout()->checkout_fields['shipping'];

Я пытался решить эту проблему в течение нескольких недель, поэтомуисходный запрос в этом посте.

/**
* WAS all checkout fields
*/


add_filter('was_conditions', 'was_conditions_add_shipping_fields', 10, 1);

function was_conditions_add_shipping_fields($conditions) {

    $newObj = new WC_Checkout();
    $shipping_fields = $newObj->get_checkout_fields($fieldset = 'shipping');

    debugToConsole($shipping_fields);

    foreach ($shipping_fields as $key => $values) :
        if (isset($values['label'])) :
            $conditions['Shipping Fields'][$key] = $values['label'];
        endif;
    endforeach;
    return $conditions;
}

Вышеприведенное приводит к NULL с функцией debugToConsole.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...