Как изменить цену всех товаров с постоянной переменной в зависимости от веса товаров в 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-код может затем прочитать из этого дБ / файла, где цены должны всегда быть в курсе

Другие вопросы по тегам