function wc_rubprice_product_field() {
woocommerce_wp_text_input( array( 'id' => '_rub_price', 'class' => 'wc_input_price short', 'label' => __( 'RUB', 'woocommerce' ) ) );
}
add_action( 'woocommerce_product_options_pricing', 'wc_rubprice_product_field' );
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' );
add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' );
function woo_add_custom_general_fields() {
global $woocommerce, $post;
echo '<div class="options_group">';
woocommerce_wp_text_input(
array(
'id' => '_nacenka',
'label' => __( 'Наценка в %', 'woocommerce' ),
'placeholder' => '50',
'desc_tip' => 'true',
'description' => __( 'Введите наценку в процентах без символа "%". Скрипт прибавит % к общей сумме. Напоминаем, что цена формируется именно к полю "Базовая цена ( руб.)", а валюта высчитывается по курсу ЦБ России', 'woocommerce' )
)
);
echo '</div>';
}
function wc_usdprice_product_field() {
woocommerce_wp_text_input( array( 'id' => '_usd_price', 'class' => 'wc_input_price short', 'label' => __( 'USD', 'woocommerce' ), 'desc_tip' => 'true', 'description' => __( 'Высчитывается по курсу ЦБ России если поле заполнено', 'woocommerce' ) ) );
}
add_action( 'woocommerce_product_options_pricing', 'wc_usdprice_product_field' );
function wc_europrice_product_field() {
woocommerce_wp_text_input( array( 'id' => '_euro_price', 'class' => 'wc_input_price short', 'label' => __( 'EUR', 'woocommerce' ), 'desc_tip' => 'true', 'description' => __( 'Высчитывается по курсу ЦБ России если поле заполнено', 'woocommerce' ) ) );
}
add_action( 'woocommerce_product_options_pricing', 'wc_europrice_product_field' );
// Сохранить наценку
function woo_add_custom_general_fields_save( $post_id ){
// Text Field
$woocommerce_nacenka = $_POST['_nacenka'];
if( !empty( $woocommerce_nacenka ) )
update_post_meta( $post_id, '_nacenka', esc_attr( $woocommerce_nacenka ) );
$woocommerce_euro_price = $_POST['_euro_price'];
if ( ( $_POST['_euro_price'] ) ) {
if ( is_numeric( $_POST['_euro_price'] ) )
update_post_meta( $post_id, '_euro_price', $_POST['_euro_price'] );
} else delete_post_meta( $post_id, '_euro_price' );
$woocommerce_usd_price = $_POST['_usd_price'];
if ( ( $_POST['_usd_price'] ) ) {
if ( is_numeric( $_POST['_usd_price'] ) )
update_post_meta( $post_id, '_usd_price', $_POST['_usd_price'] );
} else delete_post_meta( $post_id, '_usd_price' );
$woocommerce_usd_price = $_POST['_rub_price'];
if ( ( $_POST['_rub_price'] ) ) {
if ( is_numeric( $_POST['_rub_price'] ) )
update_post_meta( $post_id, '_rub_price', $_POST['_rub_price'] );
} else delete_post_meta( $post_id, '_rub_price' );
}
function wc_myprice_show() {
global $product, $post;
// Ничего не предпринимаем для вариативных товаров
//if ( $product->product_type <> 'variable' ) {
$RUB = get_post_meta( $product->get_id(), '_rub_price', true );
$USD = get_post_meta( $product->get_id(), '_usd_price', true );
$EUR = get_post_meta( $product->get_id(), '_euro_price', true );
$nacenka = get_post_meta( $product->get_id(), '_nacenka', true );
// woocommerce_price( $RUB )
// Формируем сегодняшнюю дату
$date = date("d/m/Y");
// Формируем ссылку
$link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date";
// Загружаем HTML-страницу
$fd = fopen($link, "r");
$text="";
if (!$fd) echo "";
else
{
// Чтение содержимого файла в переменную $text
while (!feof ($fd)) $text .= fgets($fd, 4096);
}
// Закрыть открытый файловый дескриптор
fclose($fd);
// Получаем текущие курсы валют в rss-формате с сайта www.cbr.ru
$content = $text;
// Разбираем содержимое, при помощи регулярных выражений
$pattern = "#<Valute ID=\"([^\"]+)[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>([^<]+)#i";
preg_match_all($pattern, $content, $out, PREG_SET_ORDER);
$dollar = "";
$euro = "";
foreach($out as $cur)
{
if($cur[2] == 840) $dollar = str_replace(",",".",$cur[4]);
if($cur[2] == 978) $euro = str_replace(",",".",$cur[4]);
}
// проверяем заполнено ли поле, если да, то умножаем на курс и записываем в $custom_price
if (($RUB != "") && ($RUB != 0)) {
$custom_price = $RUB;
}
if (($USD != "") && ($USD != 0)) {
$custom_price = $USD * $dollar;
}
if (($EUR != "") && ($EUR != 0)) {
$custom_price = $EUR * $euro;
}
ceil($custom_price); // округляем до сотых
$regular_price = get_post_meta($post->ID, '_price', true); //получаем текущую цену товара
$proc = $nacenka; // количество процентов
$number = $custom_price; // число к которому надо добавить проценты
$proc = $number/100*$proc; // высчитываем процент от числа
$result = $number + $proc; // суммируем число с процентами от этого числа
ceil($result); // округляем до целого
//if ($regular_price != $ $custom_price) { // проверяем совпадает ли текущая цена с нашей новой, если нет, то перезаписываем её
update_post_meta( $post->ID, '_regular_price', $result );
update_post_meta( $post->ID, '_price', $result );
//можно вывести нашу custom_price для проверки
// echo '<div class="woocommerce_msrp">';
// _e( 'RUB : ', 'woocommerce' );
// echo '<span class="woocommerce-rrp-price RUB">' . $RUB . '</span>';
// echo '</div>';
// echo '<div class="woocommerce_msrp">';
// _e( 'USD : ', 'woocommerce' );
// echo '<span class="woocommerce-rrp-price USD">' . $USD . '</span>';
// echo '</div>';
// echo '<div class="woocommerce_msrp">';
// _e( 'EUR : ', 'woocommerce' );
// echo '<span class="woocommerce-rrp-price EUR">' . $EUR . '</span>';
// echo '</div>';
}
//}
//}
add_action( 'woocommerce_single_product_summary', 'wc_myprice_show', 5 );
add_action( 'woocommerce_after_shop_loop_item_title', 'wc_myprice_show' );