
آموزش قیمت گذاری بر اساس نرخ دلار در ووکامرس
فهرست مطالب
در دنیای فروشگاههای اینترنتی ایران، قیمت گذاری دلاری ووکامرس یکی از بهترین روشها برای مقابله با نوسانات ارزی است. با تنظیم نرخ دلار در وردپرس، میتوانید قیمت محصولات را به صورت دلاری وارد کنید و معادل ریالی آن را به طور خودکار نمایش دهید. این رویکرد نه تنها زمان شما را صرفهجویی میکند، بلکه سودآوری فروشگاه را در برابر تغییرات بازار حفظ میکند. در این مقاله، به طور کامل به قیمت گذاری بر اساس نرخ دلار در ووکامرس میپردازیم و یک روش سفارشی بدون نیاز به افزونه اضافی را آموزش میدهیم.
چرا قیمت گذاری دلاری در ووکامرس ضروری است؟
در شرایط اقتصادی ایران، نوسانات شدید نرخ ارز چالش بزرگی برای فروشندگان آنلاین ایجاد کرده است. اگر قیمت محصولات را فقط به ریال وارد کنید، هر بار افزایش دلار مجبور به ویرایش دستی صدها محصول میشوید. اما با قیمت گذاری دلاری، تنها نرخ دلار را یک بار تغییر میدهید و همه قیمتها به طور خودکار بهروز میشوند.
بیشتر بخوانید: آموزش ثبت فروشگاه در ترب برای افزایش فروش اینترنتی

معایب قیمت گذاری ریالی در دوران نوسانات ارزی
- اتلاف زمان و انرژی: ویرایش دستی قیمت هر محصول، به ویژه در فروشگاههای بزرگ با هزاران کالا، بسیار زمانبر است.
- خطای انسانی: محاسبه اشتباه معادل ریالی میتواند منجر به ضرر مالی یا نارضایتی مشتری شود.
- کاهش سودآوری: تأخیر در بهروزرسانی قیمتها باعث از دست دادن حاشیه سود در برابر افزایش نرخ ارز میشود.
- عدم رقابتپذیری: مشتریان ممکن است به فروشگاههایی با قیمتهای بهروزتر روی آورند.
مزایای قیمت گذاری دلاری با پرداخت معادل ریالی
- بهروزرسانی خودکار: تغییر نرخ دلار، همه قیمتها را همزمان آپدیت میکند.
- حفظ حاشیه سود: قیمت پایه دلاری ثابت میماند و سود شما در برابر تورم و نوسانات ارزی محافظت میشود.
- سهولت مدیریت: بدون نیاز به ویرایش تکتک محصولات، فروشگاه را حرفهایتر اداره کنید.
- انعطافپذیری بیشتر: مناسب برای محصولات وارداتی یا وابسته به ارز خارجی.
این روش به شما کمک میکند تا تمرکزتان را روی بازاریابی و فروش بگذارید، نه مدیریت روزانه قیمتها.
درمورد افزونه اسنپ باکس برای ووکامرس بخوانید.
روش پیادهسازی قیمت گذاری دلاری بدون افزونه اضافی
خوشبختانه، با یک قطعه کد سفارشی در فایل functions.php قالب فرزند، میتوانید این قابلیت را به ووکامرس اضافه کنید. این کد یک متاباکس جدید ایجاد میکند تا قیمت دلاری محصولات را وارد کنید و یک صفحه تنظیمات برای نرخ دلار اضافه میکند.
مراحل کلی پیادهسازی
- کد را به انتهای فایل functions.php قالب فرزند خود اضافه کنید.
- در صفحه ویرایش هر محصول، قیمت دلاری را در متاباکس جدید وارد کنید (اگر 0 باشد، قیمت ریالی اصلی حفظ میشود).
- برای محصولات متغیر، قیمت دلاری هر واریاسیون را جداگانه تنظیم کنید.
- در داشبورد وردپرس، از منوی “تعیین نرخ ارز” نرخ جدید دلار را وارد و ذخیره کنید.
- روی دکمه “آپدیت قیمتها” کلیک کنید تا همه قیمتها بهروز شوند.
این کد قیمتها را به صورت رند (مثلاً به نزدیکترین هزار تومان) محاسبه میکند تا ظاهر حرفهایتری داشته باشند.
نکات مهم قبل از افزودن کد
- حتماً از قالب فرزند استفاده کنید تا با بهروزرسانی قالب، کد از بین نرود.
- پشتیبانگیری کامل از سایت بگیرید.
- کد را دقیق کپی کنید و در انتهای functions.php قرار دهید.
درمورد تفاوت هاست اشتراکی و هاست وردپرس بخوانید.
کد سفارشی برای قیمت گذاری بر اساس نرخ دلار
برای راحتی شما ، افزونه وردپرس زیر هم نصب شده و می توانید فارغ از کد های ادامه مطلب، این افزونه زیر را دانلود و نصب نمایید.
دانلود افزونه قیمت گذاری دلاری ووکامرس
در ادامه، کد کامل را آوردهایم. این کد شامل ایجاد متاباکس، ذخیره قیمت دلاری، صفحه تنظیمات نرخ و تابع بهروزرسانی خودکار است:
// ساخت متاباکس برای تعیین قیمت به دلار
add_action(‘add_meta_boxes’, ‘add_dollar_price_meta_box’);
function add_dollar_price_meta_box() {
add_meta_box(
‘dollar_price_meta_box’,
‘قیمت محصولات را به ارز مورد نظر وارد کنید (0 به معنای عدم ارتباط قیمت محصول با ارز مورد نظر است)’,
‘display_dollar_price_meta_box’,
‘product’,
‘normal’,
‘high’,
);
}
// Display the custom meta box
function display_dollar_price_meta_box($post) {
if (!current_user_can(‘edit_post’, $post->ID)) {
return;
}wp_nonce_field('save_dollar_price', 'dollar_price_nonce'); $product = wc_get_product($post->ID); if ($product->is_type('variable')) { echo '<table class="form-table">'; echo '<thead><tr><th>ID محصول متغیر</th><th>قیمت محصول متغیر به دلار (یا ارز مورد نظر):</th></tr></thead>'; echo '<tbody>'; foreach ($product->get_children() as $variation_id) { $variation = new WC_Product_Variation($variation_id); $dollar_price = get_post_meta($variation_id, '_dollar_price', true); $dollar_price = $dollar_price ? $dollar_price : 0; echo '<tr>'; echo '<td>' . esc_html($variation_id) . '</td>'; // Show variation ID echo '<td><input type="number" name="dollar_price[' . $variation_id . ']" value="' . esc_attr($dollar_price) . '" step="0.01" required></td>'; echo '</tr>'; } echo '</tbody>'; echo '</table>'; } else { $dollar_price = get_post_meta($post->ID, '_dollar_price', true); $dollar_price = $dollar_price ? $dollar_price : 0; ?> <label for="dollar_price">قیمت محصول به دلار (یا ارز مورد نظر):</label> <input type="number" id="dollar_price" name="dollar_price" value="<?php echo esc_attr($dollar_price); ?>" step="0.01" required> <?php }
}
add_action(‘save_post’, ‘save_dollar_price_meta’);
function save_dollar_price_meta($post_id) {
if (!isset($_POST[‘dollar_price_nonce’]) || !wp_verify_nonce($_POST[‘dollar_price_nonce’], ‘save_dollar_price’)) {
return;
}if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return; } if (!current_user_can('edit_post', $post_id)) { return; } if (isset($_POST['dollar_price']) && is_array($_POST['dollar_price'])) { foreach ($_POST['dollar_price'] as $variation_id => $dollar_price) { $dollar_price = floatval($dollar_price); if (is_numeric($dollar_price)) { update_post_meta($variation_id, '_dollar_price', $dollar_price); } } } if (isset($_POST['dollar_price']) && !is_array($_POST['dollar_price'])) { $dollar_price = sanitize_text_field($_POST['dollar_price']); if (is_numeric($dollar_price)) { update_post_meta($post_id, '_dollar_price', $dollar_price); } }
}
function get_dollar_to_rial_rate() {
return get_option(‘dollar_to_rial_rate’, 1);
}
function update_all_product_prices() {
$rate = get_dollar_to_rial_rate();if (!$rate || $rate <= 0) { error_log("Invalid dollar rate: $rate"); return; } $paged = 1; $per_page = 50; $updated_count = 0; do { $args = array( 'post_type' => 'product', 'posts_per_page' => $per_page, 'paged' => $paged, 'post_status' => 'publish', ); $products = get_posts($args); foreach ($products as $product_post) { $product = wc_get_product($product_post->ID); if ($product->is_type('variable')) { foreach ($product->get_children() as $variation_id) { $variation = wc_get_product($variation_id); $price_in_dollars = get_post_meta($variation_id, '_dollar_price', true); if ($price_in_dollars) { $new_price = $price_in_dollars * $rate; $new_price = ceil($new_price / 1000) * 1000; if ($new_price != $variation->get_regular_price()) { $variation->set_regular_price($new_price); $variation->save(); $updated_count++; } } else { error_log("No dollar price set for variation ID: {$variation_id}"); // Debugging line } } } else { $price_in_dollars = get_post_meta($product_post->ID, '_dollar_price', true); if ($price_in_dollars) { $new_price = $price_in_dollars * $rate; $new_price = ceil($new_price / 1000) * 1000; if ($new_price != $product->get_regular_price()) { $product->set_regular_price($new_price); $product->save(); $updated_count++; } } else { error_log("No dollar price set for product ID: {$product_post->ID}"); // Debugging line } } } $paged++; } while (count($products) > 0); error_log("Updated {$updated_count} product prices."); // Debugging line
}
// ایجاد صفحه تنظیمات قیمت روز نرخ ارز یا دلار در داشبورد وردپرس
add_action(‘admin_menu’, ‘dollar_rate_settings_page’);
function dollar_rate_settings_page() {
add_menu_page(
‘تعیین قیمت نرخ روز ارز’,
‘تعیین نرخ ارز’,
‘manage_options’,
‘dollar-rate’,
‘dollar_rate_settings_page_html’,
‘dashicons-money-alt’,
);
}
function dollar_rate_settings_page_html() {
?>
تعیین قیمت نرخ امروز دلار یا ارز موردنظر<h2>آپدیت قیمت ها</h2> <form method="post"> <input type="hidden" name="update_prices" value="1"> <input type="submit" class="button button-primary" value="آپدیت قیمت ها"> </form> </div> <?php // Check if the update button was clicked if (isset($_POST['update_prices'])) { update_all_product_prices(); // Manually call the function to update prices echo '<div class="updated"><p>قیمت ها آپدیت شد</p></div>'; }
}
// Register the settings field
add_action(‘admin_init’, ‘register_dollar_rate_setting’);
function register_dollar_rate_setting() {
register_setting(‘dollar_rate_options’, ‘dollar_to_rial_rate’);add_settings_section( 'dollar_rate_section', 'نرخ روز ارز یا دلار را وارد کنید و سپس بعد از ذخیره روی آپدیت قیمت ها بزنید', null, 'dollar-rate' ); add_settings_field( 'dollar_to_rial_rate', 'قیمت نرخ دلار یا ارز مورد نظر امروز به تومان(یا به ریال بر اساس تنظیمات وبسایت شما)', 'dollar_rate_field_html', 'dollar-rate', 'dollar_rate_section' );
}
function dollar_rate_field_html() {
$rate = get_option(‘dollar_to_rial_rate’, 1);
echo ‘
‘;
}
پس از افزودن کد، همه چیز آماده است. این روش ساده اما قدرتمند، فروشگاه شما را در برابر نوسانات ارزی مقاوم میکند.
سوالات متداول (FAQ)
آیا این روش با محصولات متغیر ووکامرس سازگار است؟
بله، کد به طور کامل از محصولات ساده و متغیر پشتیبانی میکند و قیمت دلاری هر واریاسیون را جداگانه مدیریت میکند.
اگر قیمت دلاری را 0 بگذارم، چه اتفاقی میافتد؟
محصول با قیمت ریالی اصلی خود نمایش داده میشود و از محاسبات دلاری مستثنی میگردد.
چگونه قیمتها را رند کنم؟
در کد فعلی، قیمتها به نزدیکترین هزار تومان رند میشوند. میتوانید این بخش را بر اساس نیاز تغییر دهید.
آیا نیاز به افزونه اضافی دارم؟
خیر، این روش کاملاً سفارشی و بدون افزونه است، اما اگر فروشگاه بزرگی دارید، تست روی سایت آزمایشی توصیه میشود.
اگر نرخ دلار را تغییر ندهم، قیمتها چطور میمانند؟
تا زمانی که دکمه آپدیت را نزنید، قیمتهای قبلی حفظ میشوند.
با این آموزش، قیمت گذاری دلاری در ووکامرس برای شما آسانتر از همیشه خواهد بود. موفق باشید!
درمورد رفع مشکل ارسال ایمیل ووکامرس بخوانید.


