• Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!

Woocommerce, каждому товару своя валюта

Image CMS
#43
мне что то похожее но много проще! ) подскажие как изменить этот код или есть готовое решение?

Мне нужено просто возможность выбора для каждого товара своей валюты без всяких пересчетов!

Т.е. есть базовая цена и я могу выбрать в чем ее отображать на сайте - в $ или рублях например и все!
 

ciger

Новичок
#44
перед строкой с round($custom_price, 2); допишите $custom_price = ($custom_price * 0,03) + $custom_price;
где 0,03 - это 3%
Здравствуйте!
У меня не срабатыет добавление 2% к курсу, могли бы помочь с кодом. Делаю так:
$custom_price = ($custom_price * 0,02) + $custom_price;
round($custom_price, 2); // округляем до сотых, чтобы в regular_price не записывались огромные дроби

Появляется пустой экран, помогите плиз
 

Greezlee

Новичок
#45
Здравствуйте!
У меня не срабатыет добавление 2% к курсу, могли бы помочь с кодом. Делаю так:
$custom_price = ($custom_price * 0,02) + $custom_price;
round($custom_price, 2); // округляем до сотых, чтобы в regular_price не записывались огромные дроби

Появляется пустой экран, помогите плиз
Нужно:
round($custom_price, 2);
Заменить на:
$custom_price = round($custom_price, 2);
 

ciger

Новичок
#47
Как с помощью WP ALL IMPORT
импортировать цены в разных валютах?
Произвольными полями типа
_rub_price
_usd_price
_euro_price

Правильно или нет подскажите, очень хочется импортировать прайс правильно.
 

Greezlee

Новичок
#49
Как с помощью WP ALL IMPORT
импортировать цены в разных валютах?
Произвольными полями типа
_rub_price
_usd_price
_euro_price

Правильно или нет подскажите, очень хочется импортировать прайс правильно.
Для WP ALL IMPORT я переделывал весь этот код. Данный код не захотел работать как надо.
 

ciger

Новичок
#51
Для WP ALL IMPORT я переделывал весь этот код. Данный код не захотел работать как надо.
Сейчас затестил, действительно не подтягивает _rub_price _usd_price через кастомные поля.
Не могли бы поделиться, хочу затестить, если можно?
 
Последнее редактирование:

searchingman

Гуру
Местный
#52
Здравствуйте!
У меня не срабатыет добавление 2% к курсу, могли бы помочь с кодом. Делаю так:
$custom_price = ($custom_price * 0,02) + $custom_price;
round($custom_price, 2); // округляем до сотых, чтобы в regular_price не записывались огромные дроби

Появляется пустой экран, помогите плиз
Чтобы решить проблему нужно понять, что вызывает ошибку.
Понимая в какой строке и какой код вызывает ошибку, можно ее устранить.
Прочитайте как включить вывод ошибок в Wordpress.
 

ciger

Новичок
#53
1. Выдает ошибку, как можно поправить?

funtions.php посмотрите кто может, очень нужна помошь
http://sensis24.ru/functions.txt

2. Как правильно импортировать товры с разными ценами правильно из WP All Import pro
Может подскажете?
 
Последнее редактирование:

ciger

Новичок
#55
По ссылке ничего не открывается, т.е. 404 ошибка.
Код:
<?php
// Разные цены для разных товаров

function wc_myprice_product_field() {
woocommerce_wp_text_input( array( 'id' => '_my_price', 'class' => 'wc_input_price short', 'label' => __( 'Стоимость', 'woocommerce' ) ) ); // добавляем поле "Стоимость"
woocommerce_wp_text_input( array( 'id' => '_curency_price', 'class' => 'wc_input_price short', 'label' => __( 'Валюта', 'woocommerce' ) ) ); // добавляем поле "Валюта", где указываем только RUB, USD или EUR, по желанию можно добавить новые значения или переделать это поле в выпадающий список
}
add_action( 'woocommerce_product_options_pricing', 'wc_myprice_product_field' );


function wc_myprice_save_product( $product_id ) {
if ( ( $_POST['_my_price'] ) ) {
if ( is_numeric( $_POST['_my_price'] ) )
update_post_meta( $product_id, '_my_price', $_POST['_my_price'] );
} else delete_post_meta( $product_id, '_my_price' );

if ( ( $_POST['_curency_price'] ) ) {
update_post_meta( $product_id, '_curency_price', $_POST['_curency_price'] );
} else delete_post_meta( $product_id, '_curency_price' );
}
add_action( 'save_post', 'wc_myprice_save_product' );


function wc_myprice_show() {
global $product, $post;
// Ничего не предпринимаем для вариативных товаров
//if ( $product->product_type <> 'variable' ) {
$my_price = get_post_meta( $product->id, '_my_price', true );
$curency = get_post_meta( $product->id, '_curency_price', true );
// woocommerce_price( $RUB )

$blogtime = current_time('mysql'); // записываем текущее время и дату
list( $today_year, $today_month, $today_day, $hour, $minute, $second ) = split( '([^0-9])', $blogtime ); //сохраняем отдельно значения даты, часов, минут и т.д.

if ($hour == 7 || $hour == 12 || $hour == 17 || $hour == 22 || $hour == 1 || $hour == 4) { // указываем на протяжении каких часов мы обновляем (перезаписываем) курс на новый
$data="var=go";
$fp = fsockopen("sensis24.ru", 80, $errno, $errstr, 10); // открыть указанный хост по 80 порту
$out = "POST /currency/get-currency.php HTTP/1.1\n"; // открыть данный скрипт
$out .= "Host: sensis24.ru\n";
$out .= "Referer: sensis24.ru/\n";
$out .= "User-Agent: Opera\n";
$out .= "Content-Type: application/x-www-form-urlencoded\n";
$out .= "Content-Length: ".strlen($data)."\n\n";
$out .= $data."\n\n";
fputs($fp, $out); // отправка данных принимающему скрипту
fclose($fp);   
}
 
// открываем файл с курсом валют и записываем в массив
$lines = file('http://sensis24.ru/currency.txt');

    if ($lines) {       
// проверяем заполнено ли поле, если да, то умножаем на курс и записываем в $custom_price
if ($curency == "RUB")
{
    $custom_price = $my_price;
}

if ($curency == "USD")
{
    $custom_price = $my_price * $lines[0];
}

if ($curency == "EUR")
{
    $custom_price = $my_price * $lines[1];
}
$custom_price = round($custom_price, 2); // округляем до сотых, чтобы в regular_price не записывались огромные дроби

update_post_meta( $post->ID, '_regular_price', $custom_price );
update_post_meta( $post->ID, '_price', $custom_price );   
    }
}

add_action( 'woocommerce_get_regular_price', 'wc_myprice_show', 10 );
 

searchingman

Гуру
Местный
#56
Код:
<?php
// Разные цены для разных товаров

function wc_myprice_product_field() {
woocommerce_wp_text_input( array( 'id' => '_my_price', 'class' => 'wc_input_price short', 'label' => __( 'Стоимость', 'woocommerce' ) ) ); // добавляем поле "Стоимость"
woocommerce_wp_text_input( array( 'id' => '_curency_price', 'class' => 'wc_input_price short', 'label' => __( 'Валюта', 'woocommerce' ) ) ); // добавляем поле "Валюта", где указываем только RUB, USD или EUR, по желанию можно добавить новые значения или переделать это поле в выпадающий список
}
add_action( 'woocommerce_product_options_pricing', 'wc_myprice_product_field' );


function wc_myprice_save_product( $product_id ) {
if ( ( $_POST['_my_price'] ) ) {
if ( is_numeric( $_POST['_my_price'] ) )
update_post_meta( $product_id, '_my_price', $_POST['_my_price'] );
} else delete_post_meta( $product_id, '_my_price' );

if ( ( $_POST['_curency_price'] ) ) {
update_post_meta( $product_id, '_curency_price', $_POST['_curency_price'] );
} else delete_post_meta( $product_id, '_curency_price' );
}
add_action( 'save_post', 'wc_myprice_save_product' );


function wc_myprice_show() {
global $product, $post;
// Ничего не предпринимаем для вариативных товаров
//if ( $product->product_type <> 'variable' ) {
$my_price = get_post_meta( $product->id, '_my_price', true );
$curency = get_post_meta( $product->id, '_curency_price', true );
// woocommerce_price( $RUB )

$blogtime = current_time('mysql'); // записываем текущее время и дату
list( $today_year, $today_month, $today_day, $hour, $minute, $second ) = split( '([^0-9])', $blogtime ); //сохраняем отдельно значения даты, часов, минут и т.д.

if ($hour == 7 || $hour == 12 || $hour == 17 || $hour == 22 || $hour == 1 || $hour == 4) { // указываем на протяжении каких часов мы обновляем (перезаписываем) курс на новый
$data="var=go";
$fp = fsockopen("sensis24.ru", 80, $errno, $errstr, 10); // открыть указанный хост по 80 порту
$out = "POST /currency/get-currency.php HTTP/1.1\n"; // открыть данный скрипт
$out .= "Host: sensis24.ru\n";
$out .= "Referer: sensis24.ru/\n";
$out .= "User-Agent: Opera\n";
$out .= "Content-Type: application/x-www-form-urlencoded\n";
$out .= "Content-Length: ".strlen($data)."\n\n";
$out .= $data."\n\n";
fputs($fp, $out); // отправка данных принимающему скрипту
fclose($fp);  
}

// открываем файл с курсом валют и записываем в массив
$lines = file('http://sensis24.ru/currency.txt');

    if ($lines) {      
// проверяем заполнено ли поле, если да, то умножаем на курс и записываем в $custom_price
if ($curency == "RUB")
{
    $custom_price = $my_price;
}

if ($curency == "USD")
{
    $custom_price = $my_price * $lines[0];
}

if ($curency == "EUR")
{
    $custom_price = $my_price * $lines[1];
}
$custom_price = round($custom_price, 2); // округляем до сотых, чтобы в regular_price не записывались огромные дроби

update_post_meta( $post->ID, '_regular_price', $custom_price );
update_post_meta( $post->ID, '_price', $custom_price );  
    }
}

add_action( 'woocommerce_get_regular_price', 'wc_myprice_show', 10 );
Чтобы отключить проверку в поле "Валюта" для ввода текста, н-р, USD
Замените
PHP:
woocommerce_wp_text_input( array( 'id' => '_curency_price', 'class' => 'wc_input_price short', 'label' => __( 'Валюта', 'woocommerce' ) ) ); // добавляем поле "Валюта", где указываем только RUB, USD или EUR, по желанию можно добавить новые значения или переделать это поле в выпадающий список
на
PHP:
woocommerce_wp_text_input( array( 'id' => '_curency_price', 'class' => 'wc_input_curency_price short', 'label' => __( 'Валюта', 'woocommerce' ) ) ); // добавляем поле "Валюта", где указываем только RUB, USD или EUR, по желанию можно добавить новые значения или переделать это поле в выпадающий список
Т.е проверка на соответствие формату цены была по передаваемому классу 'wc_input_price'.
 

ciger

Новичок
#57
Чтобы отключить проверку в поле "Валюта" для ввода текста, н-р, USD
Замените
PHP:
woocommerce_wp_text_input( array( 'id' => '_curency_price', 'class' => 'wc_input_price short', 'label' => __( 'Валюта', 'woocommerce' ) ) ); // добавляем поле "Валюта", где указываем только RUB, USD или EUR, по желанию можно добавить новые значения или переделать это поле в выпадающий список
на
PHP:
woocommerce_wp_text_input( array( 'id' => '_curency_price', 'class' => 'wc_input_curency_price short', 'label' => __( 'Валюта', 'woocommerce' ) ) ); // добавляем поле "Валюта", где указываем только RUB, USD или EUR, по желанию можно добавить новые значения или переделать это поле в выпадающий список
Т.е проверка на соответствие формату цены была по передаваемому классу 'wc_input_price'.
Спасибо за оперативный ответ!
 
Последнее редактирование:

ciger

Новичок
#58
Спасибо за оперативный ответ!
Сейчас стало возможным ввести валюту например USD.
Но товар не отбражается. И категории тоже все кривые.Что можно попробывать дальше?
http://sensis24.ru/catalog/

Меня еще очень интересует возможность импорта через wp all import
может кто за деньги переделает этот скрипт?
 

Greezlee

Новичок
#59
Сейчас стало возможным ввести валюту например USD.
Но товар не отбражается. И категории тоже все кривые.Что можно попробывать дальше?
http://sensis24.ru/catalog/

Меня еще очень интересует возможность импорта через wp all import
может кто за деньги переделает этот скрипт?
Могу сделать. Пришлите файл который загружаете, сделайте резервную копию сайта и пришлите личным сообщением логин и пароль администратора сайта.
 

Ria

Форумчанин
#60
Помогите разобраться пожалуйста, добавил поле валюта
woocommerce_wp_text_input( array( 'id' => '_curency_price', 'class' => 'wc_input_curency_price short', 'label' => __( 'Валюта', 'woocommerce' ) ) );

Скажем у меня там написано USD - как мне этот текст вывести правильно в категориях возле каждого товара, к примеру по умолчанию у нас стоит отображение цены и символ валюты:
get_woocommerce_currency_symbol().$product->price;

На что нужно заменить сам символ: get_woocommerce_currency_symbol() что бы у меня отображало то что я ввел в поле валюта