اتوماتیک کردن شناسه محصول در ووکامرس

در دنیای امروز که کسب‌وکارهای آنلاین به سرعت در حال گسترش هستند، مدیریت محصولات در فروشگاه‌های اینترنتی به یکی از چالش‌های اصلی مدیران تبدیل شده است. یکی از این چالش‌ها، اختصاص شناسه‌های یکتا به محصولات است. شناسه‌های یکتا برای شناسایی و مدیریت بهتر محصولات ضروری هستند. در این مقاله، به شما نحوه اتوماتیک کردن ساخت شناسه محصول در ووکامرس را با استفاده از کدهای سفارشی آموزش خواهیم داد.

آنچه در این مطلب می خوانید

در دنیای امروز که کسب‌وکارهای آنلاین به سرعت در حال گسترش هستند، مدیریت محصولات در فروشگاه‌های اینترنتی به یکی از چالش‌های اصلی مدیران تبدیل شده است. یکی از این چالش‌ها، اختصاص شناسه‌های یکتا به محصولات است. شناسه‌های یکتا برای شناسایی و مدیریت بهتر محصولات ضروری هستند. در این مقاله، به شما نحوه اتوماتیک کردن ساخت شناسه محصول در ووکامرس را با استفاده از کدهای سفارشی آموزش خواهیم داد.

چرا شناسه‌های یکتا مهم هستند؟

شناسه‌های یکتا به شما کمک می‌کنند تا محصولات خود را به صورت دقیق‌تر مدیریت کنید. این شناسه‌ها می‌توانند در فرآیندهایی مانند ردیابی موجودی، مدیریت سفارشات و حتی در گزارش‌گیری‌ها و تحلیل‌های آماری به کار گرفته شوند. به همین دلیل، اختصاص شناسه‌های یکتا به محصولات یکی از ملزومات مدیریت یک فروشگاه آنلاین موفق است.

نحوه اتوماتیک کردن شناسه محصول

با استفاده از کدهای زیر، شما می‌توانید به صورت خودکار شناسه یکتا به محصولات خود اختصاص دهید و همچنین یک دکمه برای ساخت شناسه در صفحه ویرایش محصول و مدیریت محصولات اضافه کنید.

 

// مرتب سازی محصولات بر اساس وضعیت موجودی
function sort_products_by_stock_status( $query ) {
    if ( ! is_admin() && $query->is_main_query() && ( is_shop() || is_product_category() || is_product_tag() ) ) {
        $query->set( 'meta_key', '_stock_status' );
        $query->set( 'orderby', array( 'meta_value' => 'ASC', 'date' => 'DESC' ) );
    }
}
add_action( 'pre_get_posts', 'sort_products_by_stock_status' );

// افزودن کلاس CSS به محصولات ناموجود
function custom_product_classes( $classes, $class = '', $post_id = '' ) {
    if ( ! $post_id ) return $classes;
    $product = wc_get_product( $post_id );
    if ( $product && ! $product->is_in_stock() ) {
        $classes[] = 'out-of-stock';
    }
    return $classes;
}
add_filter( 'post_class', 'custom_product_classes', 10, 3 );

// افزودن استایل CSS برای محصولات ناموجود
function custom_out_of_stock_styles() {
    echo '
    <style>
    .out-of-stock {
        opacity: 0.5;
        background-color: #f2f2f2;
    }
    </style>
    ';
}
add_action( 'wp_head', 'custom_out_of_stock_styles' );

// اضافه کردن دکمه ساخت شناسه در صفحه ویرایش محصول
add_action('woocommerce_product_options_sku', 'add_generate_sku_button');

function add_generate_sku_button() {
    echo '<button type="button" class="button generate-sku-button">ساخت شناسه</button>';
}

// افزودن اسکریپت جاوااسکریپت برای دکمه ساخت شناسه
add_action('admin_footer', 'generate_sku_script');

function generate_sku_script() {
    global $post_type;

    if ($post_type == 'product') {
        ?>
        <script type="text/javascript">
            jQuery(document).ready(function($) {
                $('.generate-sku-button').click(function() {
                    // ساخت شناسه یونیک
                    var uniqueSKU = 'SKU-' + Math.floor(Date.now() / 1000);
                    $('#_sku').val(uniqueSKU);
                });
            });
        </script>
        <?php
    }
}

// افزودن دکمه به منوی مدیریت محصولات
add_action('restrict_manage_posts', 'add_generate_skus_button');
function add_generate_skus_button() {
    global $typenow;
    if ($typenow == 'product') {
        echo '<button id="generate_skus_button" class="button">ساخت شناسه برای محصولات بدون شناسه</button>';
    }
}

// افزودن اسکریپت جاوااسکریپت برای دکمه
add_action('admin_footer', 'generate_skus_script');
function generate_skus_script() {
    global $typenow;
    if ($typenow == 'product') {
        ?>
        <script type="text/javascript">
            jQuery(document).ready(function($) {
                $('#generate_skus_button').click(function() {
                    if (confirm('آیا مطمئن هستید که می‌خواهید به تمامی محصولات بدون شناسه، شناسه یکتا اختصاص دهید؟')) {
                        $.ajax({
                            url: ajaxurl,
                            method: 'POST',
                            data: {
                                action: 'generate_skus_for_products'
                            },
                            success: function(response) {
                                alert(response.data.message);
                                if (response.success) {
                                    location.reload();
                                }
                            }
                        });
                    }
                });
            });
        </script>
        <?php
    }
}

// افزودن اکشن AJAX برای اختصاص شناسه
add_action('wp_ajax_generate_skus_for_products', 'generate_skus_for_products');
function generate_skus_for_products() {
    $args = array(
        'post_type' => 'product',
        'posts_per_page' => -1,
        'meta_query' => array(
            'relation' => 'OR',
            array(
                'key' => '_sku',
                'value' => '',
                'compare' => '='
            ),
            array(
                'key' => '_sku',
                'compare' => 'NOT EXISTS'
            )
        )
    );

    $query = new WP_Query($args);
    $updated_products = 0;

    while ($query->have_posts()) {
        $query->the_post();
        $product_id = get_the_ID();
        $sku = 'SKU-' . $product_id;
        update_post_meta($product_id, '_sku', $sku);
        $updated_products++;
    }

    wp_reset_postdata();

    if ($updated_products > 0) {
        wp_send_json_success(array('message' => 'شناسه‌ها با موفقیت برای ' . $updated_products . ' محصول تنظیم شدند.'));
    } else {
        wp_send_json_error(array('message' => 'هیچ محصولی بدون شناسه یافت نشد.'));
    }
}


توضیح کد

  1. مرتب‌سازی محصولات بر اساس وضعیت موجودی: این کد محصولات فروشگاه را بر اساس وضعیت موجودی و تاریخ مرتب می‌کند.
  2. افزودن کلاس CSS به محصولات ناموجود: با این کد، محصولات ناموجود دارای کلاس CSS مشخصی می‌شوند.
  3. افزودن استایل CSS برای محصولات ناموجود: استایل‌هایی برای محصولات ناموجود تعریف می‌شود تا ظاهری متفاوت داشته باشند.
  4. اضافه کردن دکمه ساخت شناسه در صفحه ویرایش محصول: این کد دکمه‌ای به صفحه ویرایش محصول اضافه می‌کند که با کلیک بر روی آن، شناسه یکتا برای محصول ساخته می‌شود.
  5. افزودن دکمه به منوی مدیریت محصولات: این کد دکمه‌ای به منوی مدیریت محصولات اضافه می‌کند تا شناسه یکتا به تمامی محصولات بدون شناسه اختصاص داده شود.
  6. افزودن اکشن AJAX برای اختصاص شناسه: این کد اکشنی را تعریف می‌کند که با استفاده از AJAX شناسه یکتا به محصولات بدون شناسه اختصاص دهد.

نتیجه‌گیری

اتوماتیک کردن فرآیند اختصاص شناسه به محصولات می‌تواند مدیریت فروشگاه اینترنتی شما را بهبود بخشد و از مشکلات احتمالی جلوگیری کند. اگر به خدمات طراحی سایت نیاز دارید تا فروشگاه اینترنتی خود را به بهترین شکل مدیریت کنید، می‌توانید با کلیک روی ثبت سفارش فرم مربوطه را پر کنید تا در کمترین زمان ممکن با شما تماس گرفته شود.

با استفاده از این کدها و راهنمایی‌های موجود، می‌توانید فروشگاه ووکامرس خود را بهبود بخشید و تجربه بهتری برای مشتریان خود فراهم کنید.

اشتراک گذاری:

دیدگاهتان را بنویسید

سایر مقالات