Как изменить цену всех товаров с постоянной переменной в зависимости от веса товаров в WordPress?
Я хочу изменить цену продуктов в зависимости от веса с переменной суммой. Например, серебро, так как цена меняется изо дня в день, поэтому цена будет рассчитываться с суммой, которую я вставлю за 1 г серебра. Например, продукт стоит 300 г, а цена за 1 г серебра составляет 2000 долларов, а затем 300*2000 = 600 000 долларов. Цена на серебро будет меняться ежедневно, и цена будет рассчитываться в соответствии с ценами на все товары. Есть ли плагин для этого или если это возможно с некоторым изменением кода, я могу это сделать. Помоги мне с этим вопросом. Спасибо
2 ответа
Вот решение, которое вы можете изменить в соответствии со своими потребностями, в основном это массовое обновление цены на основе введенной вами цены (текущая цена за грамм).
Шаг 1 Добавьте новую страницу на wp-admin
называется "Обновление цены"
Шаг 2 Создайте пользовательский шаблон в каталоге вашей темы с именем page-price-update.php
и вставьте следующий фрагмент в этот файл шаблона
<?php get_header(); ?>
<?php if( is_admin() ) :?>
<form action="<?php echo admin_url('admin-ajax.php'); ?>" method="post" >
<p class="form-row">
<label for="gram_price">Current Price of 1 Gram</label>
<input type="number" name="gram_price" value="" />
</p>
<p class="form-row">
<input type="hidden" name="action" value="bulk_update_price" />
<input type="submit" value="Update Now" />
</p>
</form>
<?php else : ?>
<h3>You need to be an Admin to access this page.!</h3>
<?php endif; ?>
<?php get_footer(); ?>
Шаг 3 Поместите следующий фрагмент в тему functions.php
function bulk_update_price() {
if( isset( $_POST["gram_price"] ) && is_numeric( $_POST["gram_price"] ) ) {
// get all products
$posts = get_posts( array('post_type'=>'product', 'posts_per_page'=>-1 ) );
if( count( $posts ) > 0 ) {
// iterare through each product
foreach ( $posts as $post ) {
setup_postdata( $post );
wc_setup_product_data( $post );
$product = wc_get_product( $post->ID );
if( $product->has_weight() ) {
// get the current price entered i the form field
$current_price = floatval( $_POST["gram_price"] );
// get the product weight
$weight = $product->get_weight();
// well now set the price
$product->set_price( $weight * $current_price );
}
}
}
}
echo "<h1>Prices updated Successfully.!</h1>";
}
add_action ( 'wp_ajax_bulk_update_price', 'bulk_update_price' );
add_action ( 'wp_ajax_nopriv_bulk_update_price', 'bulk_update_price' );
Теперь посетите эту страницу (http://your-domain/price-update
) и сделайте обновление цены.
Насколько я знаю, для этого нет плагина. Поскольку цены меняются ежедневно, вам следует создать задание cronjob, как предложил Эрик ван де Вен. При этом вы можете обновить цены, которые вы храните в базе данных или в файле. Ваш WordPress-код может затем прочитать из этого дБ / файла, где цены должны всегда быть в курсе