Способы доставки на основе установленного порога даты в WooCommerce

Я столкнулся с аналогичной проблемой. В processstartinfo есть поле пароля, уловка заключается в том, что вы должны предоставить пароль в качестве защищенной строки. Таким образом, код будет выглядеть следующим образом:

System.Security.SecureString password = new System.Security.SecureString();
password.AppendChar('c1');
//append the all characters of your password, you could probably use a loop and then,
Process p =new Process();
p.UseShellExecute = false;
p.UserName = Environment.UserName;
p.FileName = file ;
p.Sassword=password;
p.Start();
1
задан LoicTheAztec 13 March 2019 в 07:50
поделиться

1 ответ

Следующий код активирует различные методы доставки на основе определенного порогового значения даты.

Вам нужно будет указать в функции свои настройки для:
- Часовой пояс магазина
- Идентификаторы тарифа для двух способов доставки (например, формат flat_rate: 12) )
- Порог даты

Код:

add_filter( 'woocommerce_package_rates', 'free_shipping_disable_flat_rate', 100, 2 );
function free_shipping_disable_flat_rate( $rates, $package ) {

    ## ----- YOUR SETTINGS HERE BELOW  ----- ##

    date_default_timezone_set('Europe/London'); // <== Set the time zone (http://php.net/manual/en/timezones.php)

    $shippping_rates = ['flat_rate:12', 'flat_rate:14']; // <== Set your 2 shipping methods rate IDs
    $defined_date    = "2019-03-05";                     // <== Set your date threshold

    ## ------------------------------------- ##

    $now_timestamp  = strtotime("now"); // Current timestamp in seconds
    $date_timestamp = strtotime($defined_date); // Targeted timestamp threshold

    // 1. BEFORE the specified date (with 1st shipping method rate ID)
    if ( array_key_exists( $shippping_rates[0], $rates ) && $now_timestamp > $date_timestamp ) {
        unset($rates[$shippping_rates[0]]); // Remove first shipping method
    }
    // 2. AFTER the specified date included (with 2nd shipping method rate ID)
    elseif ( array_key_exists( $shippping_rates[1], $rates ) && $now_timestamp <= $date_timestamp ) {
        unset($rates[$shippping_rates[1]]); // Remove Second shipping method
    }

    return $rates;
}

Код входит в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.

Чтобы это работало, вам необходимо обновить кэшированные данные доставки:
1) Сначала вставьте и сохраните этот код в файле function.php.
2) В настройках Доставки войдите в Зону Доставки, затем отключите Способ Доставки и «Сохранить» и повторно включите его и «Сохранить». Вы сделали. .

Чтобы получить правильный идентификатор тарифа методов доставки, проверьте код их переключателей с помощью инструментов браузера (на страницах корзины или оформления заказа) и используйте данные атрибута value , например: 1116]

<input type="radio" name="shipping_method[0]" data-index="0" id="shipping_method_0_flat_rate12" 
value="flat_rate:12" class="shipping_method" checked="checked">

… так вот flat_rate:12 в value="flat_rate:12"

0
ответ дан LoicTheAztec 13 March 2019 в 07:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: