Изменение переменной цены программно в woocommerce 3 [дубликат]

Обновлено до 2015 года: сейчас прошло шесть лет: большинство людей используют загрузчик модулей, а в основных модульных системах есть способы загрузки шаблонов. Это не встроенный, но наиболее распространенным типом многострочной строки являются шаблоны, и в любом случае шаблоны вообще не должны содержать JS.

require.js: «требуется текст».

Использование require.js 'text' plugin , с многострочным шаблоном в template.html

var template = require('text!template.html')

NPM / браузер: модуль 'brfs'

Browserify использует модуль «brfs» для загрузки текстовых файлов. Это фактически построит ваш шаблон в вашем комплекте HTML.

var fs = require("fs");
var template = fs.readFileSync(template.html', 'utf8');

Легко.

5
задан LoicTheAztec 20 April 2018 в 15:25
поделиться

1 ответ

Обновлено (2018) с 2 версиями (проверено и продолжает работать и в Woocommerce 3.3.x) :

1) Версия плагина с Функция конструктора:

Используемые вами крючки устарели в WooCommerce 3 +

Чтобы заставить работать для всех цен на продукты, включая цены на изменение, вы должны использовать это:

## The following goes inside the constructor ##

// Simple, grouped and external products
add_filter('woocommerce_product_get_price', array( $this, 'custom_price' ), 99, 2 );
add_filter('woocommerce_product_get_regular_price', array( $this, 'custom_price' ), 99, 2 );
// Variations 
add_filter('woocommerce_product_variation_get_regular_price', array( $this, 'custom_price' ), 99, 2 );
add_filter('woocommerce_product_variation_get_price', array( $this, 'custom_price' ), 99, 2 );

// Variable (price range)
add_filter('woocommerce_variation_prices_price', array( $this, 'custom_variable_price' ), 99, 3 );
add_filter('woocommerce_variation_prices_regular_price', array( $this, 'custom_variable_price' ), 99, 3 );

## This goes outside the constructor ##

public function custom_price( $price, $product ) {
    // Delete product cached price  (if needed)
    // wc_delete_product_transients($product->get_id());

    return $price * 2; // X2 for testing
}

public function custom_variable_price( $price, $variation, $product ) {
    // Delete product cached price  (if needed)
    // wc_delete_product_transients($variation->get_id());

    return $price * 2; // X2 for testing
}

Код проверен и отлично работает (только) в WooCommerce 3 +.


2) Для версии темы: functions.php файл в активной дочерней теме (или активной теме) :

// Simple, grouped and external products
add_filter('woocommerce_product_get_price', 'custom_price', 99, 2 );
add_filter('woocommerce_product_get_regular_price', 'custom_price', 99, 2 );
// Variations
add_filter('woocommerce_product_variation_get_regular_price', 'custom_price', 99, 2 );
add_filter('woocommerce_product_variation_get_price', 'custom_price', 99, 2 );
function custom_price( $price, $product ) {
    // Delete product cached price  (if needed)
    // wc_delete_product_transients($product->get_id());

    return $price * 2; // X2 for testing
}

// Variable (price range)
add_filter('woocommerce_variation_prices_price', 'custom_variable_price', 99, 3 );
add_filter('woocommerce_variation_prices_regular_price', 'custom_variable_price', 99, 3 );
function custom_variable_price( $price, $variation, $product ) {
    // Delete product cached price  (if needed)
    // wc_delete_product_transients($variation->get_id());

    return $price * 2; // X2 for testing
}

Протестировано и работает в woocommerce 3 +


Для продаваемых товаров у вас есть эти крючки:

  • woocommerce_product_get_sale_price (простые, сгруппированные и внешние продукты)
  • woocommerce_variation_prices_sale_price (переменные продукты (min-max))
  • woocommerce_variation_prices_sale_price (варианты продуктов)
5
ответ дан LoicTheAztec 15 August 2018 в 14:53
поделиться
  • 1
    Спасибо! Теперь он работает, только если я удаляю переходные процессы DB с плагином, чтобы увидеть изменения. Есть ли способ удалить эти переходные процессы автоматически с помощью функции? – KronosL 23 August 2017 в 00:24
  • 2
    Не могли бы вы посоветовать мне, как правильно добавить его в функцию my_custom_price? Спасибо заранее, отличный ответ! – KronosL 23 August 2017 в 00:37
  • 3
    @KronosL Обновлен мой ответ с wc_delete_product_transients($post->ID); ... поскольку это кажется специфичным при использовании из плагина. Когда вы используете эти перехваты через тему, эта проблема не существует. После этого не будет достаточно ... так что вам придется искать немного. – LoicTheAztec 23 August 2017 в 00:55
  • 4
    Это сделал трюк! Ты обалденный – KronosL 23 August 2017 в 02:02
  • 5
    что, похоже, не работает, все цены превращаются в 0 – kos 20 January 2018 в 16:52
Другие вопросы по тегам:

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