Dijitaloop.Com
Toplu-urun-guncelleme

WooCommerce Yönetim Panelinde Dinamik Fiyat Artışı Yönetimi: Kategori Seçimi ve Artış Türü

WooCommerce, e-ticaret sitelerinin ürünlerini yönetmek için son derece kapsamlı bir platform sunar. Özellikle büyük ölçekli ürün envanterleri olan mağazalarda, fiyat yönetimi büyük bir önem taşır. Bu yazıda, WooCommerce yönetim panelinde ürün fiyatlarını dinamik olarak güncellemenin bir yolunu ele alacağız. Özellikle, belirli kategoriler için yüzde bazlı ve net fiyat artışlarını nasıl uygulayabileceğinizi açıklayacağız.

Kategori Seçimi ve Fiyat Artışı Türü

WooCommerce’de ürün fiyatlarını güncellerken, genellikle belirli bir ürün kategorisine yönelik güncellemeler yapmak isteyebilirsiniz. Örneğin, bir indirim kampanyası veya maliyet artışı gibi nedenlerle belirli bir kategori içindeki tüm ürünlerin fiyatlarını yeniden belirlemek isteyebilirsiniz. Bu tür bir fiyat güncelleme işlemi, admin panelindeki kullanıcı deneyimini büyük ölçüde kolaylaştırabilir.

Bunun yanı sıra, fiyat artışını belirlerken iki farklı yaklaşım kullanabilirsiniz: yüzde bazlı artış veya net fiyat artışı. Yüzde bazlı artış, mevcut fiyatın belirli bir yüzdesini ekleyerek fiyatı artırır. Net fiyat artışı ise belirli bir sabit tutar ekleyerek fiyatı yükseltir. Kullanıcının hangi tür artış yapmak istediğine bağlı olarak, formda dinamik bir seçim yapması sağlanır.

Formun Tasarımı ve Kullanıcı Deneyimi

Admin panelindeki formun kullanıcı dostu olması, yönetim sürecini daha verimli hale getirir. Aşağıda, yönetim panelinde kategori seçimi ve fiyat artışı türü seçimleri için düzenlenen formun tasarımına dair detaylar yer almaktadır:

  • Kategori Seçimi: Kullanıcıların güncelleme yapmak istedikleri ürün kategorisini seçebilmeleri için bir kategori seçici (wp_dropdown_categories) eklenir. Bu, tüm kategorilerin bir açılır menüde listelenmesini sağlar.
  • Fiyat Artışı Türü: Fiyat artış türünü seçmek için bir açılır menü (<select>) kullanılır. Kullanıcılar, yüzde bazlı artış veya net fiyat artışı arasında seçim yapabilirler.
  • Dinamik Alan Gösterimi: Seçilen fiyat artışı türüne bağlı olarak formda hangi alanların görüneceğini kontrol eden bir JavaScript işlevi bulunur. Eğer kullanıcı yüzde bazlı artış seçerse, sadece yüzde artış alanı görünür, net fiyat artışı alanı gizlenir. Net fiyat artışı seçildiğinde ise tam tersi gerçekleşir.

Woocommerce Fiyatların Güncellenmesi

Form gönderildiğinde, seçilen kategoriye ait tüm ürünlerin fiyatları belirtilen artış türüne göre güncellenir. Kod, WooCommerce API’si kullanılarak ürünlerin fiyat bilgilerini alır ve günceller. Varyasyonlu ürünler de dahil olmak üzere tüm ürünler için fiyat güncellemeleri yapılır:

  • Basit Ürünler: Normal ve indirimli fiyatlar, seçilen artış türüne göre hesaplanır ve güncellenir.
  • Varyasyonlu Ürünler: Varyasyonlar, ana ürünün alt ürünleri olarak ele alınır ve her bir varyasyonun fiyatı, belirlenen artış oranına göre güncellenir.

Kullanıcı Bilgilendirmesi

Fiyat güncelleme işlemi tamamlandığında, kullanıcıya işlemin başarıyla gerçekleştirildiğine dair bir bildirim gösterilir. Bu bildirim, kullanıcıların yapılan değişiklikleri hızlı bir şekilde doğrulamalarını sağlar.

WooCommerce’de ürün fiyatlarını yönetmek, özellikle büyük e-ticaret mağazalarında önemli bir görevdir. Yönetim panelinde dinamik fiyat artışı yönetimi, belirli kategoriler için hızlı ve etkili fiyat güncellemeleri yapılmasını sağlar. Kategori seçimi ve artış türü seçimi ile kullanıcı dostu bir arayüz sunmak, bu süreci daha verimli hale getirir. WooCommerce’in sunduğu bu tür özelleştirmeler, e-ticaret sitenizin fiyat yönetimini kolaylaştırır ve operasyonel verimliliğinizi artırır.

<?php
add_action('restrict_manage_posts', 'add_product_category_filter');
function add_product_category_filter() {
    global $typenow;
    if ($typenow == 'product') {
        $taxonomy = 'product_cat';
        $selected = isset($_GET[$taxonomy]) ? $_GET[$taxonomy] : '';
        $info_taxonomy = get_taxonomy($taxonomy);
        wp_dropdown_categories(array(
            'show_option_all' => __("Tüm Kategoriler"),
            'taxonomy' => $taxonomy,
            'name' => $taxonomy,
            'orderby' => 'name',
            'selected' => $selected,
            'show_count' => true,
            'hide_empty' => true,
        ));
    }
}
add_filter('parse_query', 'filter_products_by_category');
function filter_products_by_category($query) {
    global $pagenow, $typenow;
    if ($typenow == 'product' && isset($_GET['product_cat']) && is_numeric($_GET['product_cat'])) {
        $term = get_term_by('id', $_GET['product_cat'], 'product_cat');
        $query->query_vars['product_cat'] = $term->slug;
    }
}
add_action('admin_menu', 'add_custom_price_update_page');
function add_custom_price_update_page() {
    add_submenu_page('edit.php?post_type=product', 'Toplu Fiyat Güncelleme', 'Toplu Fiyat Güncelleme', 'manage_options', 'custom-price-update', 'custom_price_update_callback');
}
function custom_price_update_callback() {
    ?>
    <div class="wrap">
        <h1>Fiyat Güncelleme</h1>
        <form method="post" action="">
            <table class="form-table">
                <tr valign="top">
                    <th scope="row">Kategori Seç</th>
                    <td>
                        <?php
                        wp_dropdown_categories(array(
                            'show_option_all' => __("Tüm Kategoriler"),
                            'taxonomy' => 'product_cat',
                            'name' => 'product_cat',
                            'orderby' => 'name',
                            'selected' => '',
                            'show_count' => true,
                            'hide_empty' => true,
                        ));
                        ?>
                    </td>
                </tr>
                <tr valign="top">
                    <th scope="row">Fiyat Artış Türü</th>
                    <td>
                        <select id="price_increase_type" name="price_increase_type">
                            <option value="percent">%'lik Fiyat Artışı</option>
                            <option value="net">Net Fiyat Artışı</option>
                        </select>
                    </td>
                </tr>
                <tr valign="top" id="percent_increase_row">
                    <th scope="row">Yüzde Fiyat Artışı (%)</th>
                    <td><input type="number" name="percent_increase" step="0.01" /></td>
                </tr>
                <tr valign="top" id="net_increase_row" style="display:none;">
                    <th scope="row">Net Fiyat Artışı</th>
                    <td><input type="number" name="net_increase" step="0.01" /></td>
                </tr>
            </table>
            <input type="submit" name="update_prices" class="button-primary" value="Fiyatları Güncelle" />
        </form>
    </div>
    <script type="text/javascript">
        document.getElementById('price_increase_type').addEventListener('change', function() {
            var percentRow = document.getElementById('percent_increase_row');
            var netRow = document.getElementById('net_increase_row');
            if (this.value === 'percent') {
                percentRow.style.display = '';
                netRow.style.display = 'none';
            } else {
                percentRow.style.display = 'none';
                netRow.style.display = '';
            }
        });
    </script>
    <?php
    if (isset($_POST['update_prices'])) {
        $category_id = $_POST['product_cat'];
        $price_increase_type = $_POST['price_increase_type'];
        $percent_increase = ($price_increase_type == 'percent') ? floatval($_POST['percent_increase']) : 0;
        $net_increase = ($price_increase_type == 'net') ? floatval($_POST['net_increase']) : 0;
        $args = array(
            'post_type' => 'product',
            'posts_per_page' => -1,
        );
        if ($category_id != 0) {
            $args['tax_query'] = array(
                array(
                    'taxonomy' => 'product_cat',
                    'field' => 'id',
                    'terms' => $category_id,
                ),
            );
        }
        $products = new WP_Query($args);
        if ($products->have_posts()) {
            while ($products->have_posts()) {
                $products->the_post();
                $product_id = get_the_ID();
                $product = wc_get_product($product_id);
                if ($product->is_type('variable')) {
                    $variations = $product->get_children();
                    foreach ($variations as $variation_id) {
                        $variation = wc_get_product($variation_id);
                        $regular_price = floatval($variation->get_regular_price());
                        if ($percent_increase) {
                            $regular_price += ($regular_price * ($percent_increase / 100));
                        }
                        if ($net_increase) {
                            $regular_price += $net_increase;
                        }
                        $variation->set_regular_price($regular_price);
                        $sale_price = floatval($variation->get_sale_price());
                        if ($sale_price) {
                            if ($percent_increase) {
                                $sale_price += ($sale_price * ($percent_increase / 100));
                            }
                            if ($net_increase) {
                                $sale_price += $net_increase;
                            }
                            $variation->set_sale_price($sale_price);
                        }
                        $variation->save();
                    }
                } else {
                    $regular_price = floatval($product->get_regular_price());
                    if ($percent_increase) {
                        $regular_price += ($regular_price * ($percent_increase / 100));
                    }
                    if ($net_increase) {
                        $regular_price += $net_increase;
                    }
                    $product->set_regular_price($regular_price);
                    $sale_price = floatval($product->get_sale_price());
                    if ($sale_price) {
                        if ($percent_increase) {
                            $sale_price += ($sale_price * ($percent_increase / 100));
                        }
                        if ($net_increase) {
                            $sale_price += $net_increase;
                        }
                        $product->set_sale_price($sale_price);
                    }
                    $product->save();
                }
            }
        }
        wp_reset_postdata();
        echo '<div class="updated"><p>Fiyatlar başarıyla güncellendi.</p></div>';
    }
}

Kullanımı: Ürünler > Toplu Fiyat Güncelleme

Leave A Comment

Projenizin başlamasına yardımcı olalım.

İletişim
0544 527 49 52

Proje Başlat