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' );
function wc_usdprice_product_field() {
woocommerce_wp_text_input( array( 'id' => '_usd_price', 'class' => 'wc_input_price short', 'label' => __( 'USD', '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' ) ) );
}
add_action( 'woocommerce_product_options_pricing', 'wc_europrice_product_field' );
function wc_myprice_save_product( $product_id ) {
if ( ( $_POST['_rub_price'] ) ) {
if ( is_numeric( $_POST['_rub_price'] ) )
update_post_meta( $product_id, '_rub_price', $_POST['_rub_price'] );
} else delete_post_meta( $product_id, '_rub_price' );
if ( ( $_POST['_usd_price'] ) ) {
if ( is_numeric( $_POST['_usd_price'] ) )
update_post_meta( $product_id, '_usd_price', $_POST['_usd_price'] );
} else delete_post_meta( $product_id, '_usd_price' );
if ( ( $_POST['_euro_price'] ) ) {
if ( is_numeric( $_POST['_euro_price'] ) )
update_post_meta( $product_id, '_euro_price', $_POST['_euro_price'] );
} else delete_post_meta( $product_id, '_euro_price' );
}
add_action( 'save_post', 'wc_myprice_save_product' );
function wc_myprice_show() {
global $product, $post;
// Ничего не предпринимаем для вариативных товаров
//if ( $product->product_type <> 'variable' ) {
$RUB = get_post_meta( $product->id, '_rub_price', true );
$USD = get_post_meta( $product->id, '_usd_price', true );
$EUR = get_post_meta( $product->id, '_euro_price', 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;
}
round($custom_price, 2); // округляем до сотых, чтобы в regular_price не записывались огромные дроби
$regular_price = get_post_meta($post->ID, '_price', true); //получаем текущую цену товара
//if ($regular_price != $ $custom_price) { // проверяем совпадает ли текущая цена с нашей новой, если нет, то перезаписываем её
update_post_meta( $post->ID, '_regular_price', $custom_price );
update_post_meta( $post->ID, '_price', $custom_price );
//можно вывести нашу 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' );