تداخل کد با افزونه کش

خرید بک لینک

سلام کد زیر درست کار میکنه ولی اگر افزونه کش فعال باشه محصول را از لیست حذف کنم و صفحه را رفرش کنم باز محصول را درون لیست نمایش میده اگر محصول به لیست اضافه شده باشد تو صفحه محصول متن دکمه تغییر میکنه ولی اگر رفرش کنم باز دکمه افزدون نمایش میده متن دوم که بعد افزودن باید نمایش بده نمایش نمیده بدون افزونه کش درسته ولی با افزونه کش این مشکلات ایجاد میشه
لطفاً اگر امکانش هست راهنمایی کنید

// اضافه کردن دکمه به صفحه محصولfunction add_wishlist_button() {    global $product;    $product_id = $product->get_id();    $wishlist = isset($_COOKIE['wishlist']) ? json_decode(stripslashes($_COOKIE['wishlist']), true) : array();    // تغییر متن دکمه بر اساس وضعیت محصول در لیست    $is_in_wishlist = in_array($product_id, $wishlist);    $button_text = $is_in_wishlist ? '<i aria-hidden="true" class="fas fa-check"></i> مشاهده لیست' : '<i aria-hidden="true" class="far fa-heart"></i> افزودن به علاقهمندیها';    $button_link = $is_in_wishlist ? '/my-account' : '#';    // نمایش دکمه افزودن و مشاهده لیست    echo '<a href="' . esc_url($button_link) . '" data-product-id="' . esc_attr($product_id) . '" class="swb-wishlist-button ' . ($is_in_wishlist ? 'view-list' : 'swb-add-to-wishlist') . '">' . $button_text . '</a>';}add_shortcode('wishlist_button', 'add_wishlist_button');// پردازش افزودن و حذف محصول از لیست علاقهمندیهاfunction process_wishlist_request() {    if (!is_user_logged_in()) {        wp_send_json_error(array('message' => 'لطفاً وارد شوید.'));        exit;    }    $wishlist = isset($_COOKIE['wishlist']) ? json_decode(stripslashes($_COOKIE['wishlist']), true) : array();    $product_id = intval($_POST['product_id']);    if (isset($_POST['action']) && $_POST['action'] === 'add_to_wishlist') {        if (!in_array($product_id, $wishlist)) {            $wishlist[] = $product_id;            setcookie('wishlist', json_encode($wishlist), time() + 3600, '/');        }        wp_send_json_success(array('message' => 'محصول افزوده شد', 'url' => get_permalink($product_id)));        exit;    }    if (isset($_POST['action']) && $_POST['action'] === 'remove_from_wishlist') {        if (($key = array_search($product_id, $wishlist)) !== false) {            unset($wishlist[$key]);            setcookie('wishlist', json_encode(array_values($wishlist)), time() + (86400 * 30), '/');        }        $is_empty = empty($wishlist);        wp_send_json_success(array('message' => 'محصول حذف شد', 'is_empty' => $is_empty));        exit;    }}add_action('wp_ajax_add_to_wishlist', 'process_wishlist_request');add_action('wp_ajax_remove_from_wishlist', 'process_wishlist_request');add_action('wp_ajax_nopriv_add_to_wishlist', 'process_wishlist_request');add_action('wp_ajax_nopriv_remove_from_wishlist', 'process_wishlist_request');// شورتکد برای نمایش لیست علاقهمندیهاfunction wishlist_shortcode() {    if (!is_user_logged_in()) {        retu '<p class="swb-empty-wishlist">برای مشاهده لیست باید وارد شوید.</p>';    }    if (!isset($_COOKIE['wishlist'])) {        retu '<p class="swb-empty-wishlist">لیست علاقهمندیهای شما خالی است.</p>';    }    $wishlist = json_decode(stripslashes($_COOKIE['wishlist']), true);    if (empty($wishlist)) {        retu '<p class="swb-empty-wishlist">لیست علاقهمندیهای شما خالی است.</p>';    }    $output = '<div class="swb-wishlist-boxes">';    foreach ($wishlist as $product_id) {        $product = wc_get_product($product_id);        if ($product) {            $product_image = wp_get_attachment_image_src($product->get_image_id(), 'thumbnail');            $product_link = get_permalink($product_id);            $output .= '<div class="swb-wishlist-box">';            if ($product_image) {                $output .= '<a href="' . esc_url($product_link) . '"><img src="' . esc_url($product_image[0]) . '" alt="' . esc_attr($product->get_name()) . '" /></a>';            }            $output .= '<div class="swb-wishlist-details">';            $output .= '<a href="' . esc_url($product_link) . '"><strong>' . esc_html($product->get_name()) . '</strong></a>';            $output .= '<span>' . wc_price($product->get_price()) . '</span>';            $output .= '</div>';            $output .= '<a href="#" data-product-id="' . esc_attr($product_id) . '" class="swb-wishlist-button swb-remove-from-wishlist">حذف</a>'; // دکمه حذف            $output .= '</div>';        }    }    $output .= '</div>';    retu $output;}add_shortcode('wishlist', 'wishlist_shortcode');// افزودن اسکریپت جاوا اسکریپت برای پردازش درخواست AJAXfunction enqueue_custom_wishlist_scripts() {    wp_enqueue_script('wishlist-ajax', get_template_directory_uri() . '/js/wishlist-ajax.js', array('jquery'), null, true);    wp_localize_script('wishlist-ajax', 'wishlist_ajax_obj', array(        'ajax_url' => admin_url('admin-ajax.php'),        'nonce'    => wp_create_nonce('remove_from_wishlist'),        'is_logged_in' => is_user_logged_in(),        'login_url' => wp_login_url()    ));}add_action('wp_enqueue_scripts', 'enqueue_custom_wishlist_scripts');/********script********/<script>jQuery(document).ready(function($) {    // پردازش کلیک دکمه افزودن به لیست علاقهمندیها    $(document).on('click', '.swb-add-to-wishlist', function(e) {        e.preventDefault();        if (!wishlist_ajax_obj.is_logged_in) {            alert('برای افزودن به لیست باید وارد شوید.');            retu;        }        var product_id = $(this).data('product-id');        var $this = $(this);        $.ajax({            url: wishlist_ajax_obj.ajax_url,            type: 'POST',            data: {                action: 'add_to_wishlist',                product_id: product_id,                _ajax_nonce: wishlist_ajax_obj.nonce            },            success: function(response) {                if (response.success) {                    $this.html('<i aria-hidden="true" class="fas fa-check"></i> مشاهده لیست');                    $this.removeClass('swb-add-to-wishlist').addClass('view-list');                    $this.attr('href', '/my-account');                } else {                    alert(response.data.message);                }            },            error: function() {                alert('خطا در برقراری ارتباط با سرور.');            }        });    });    // پردازش کلیک دکمه مشاهده لیست علاقهمندیها    $(document).on('click', '.view-list', function(e) {        e.preventDefault();        if (!wishlist_ajax_obj.is_logged_in) {            alert('برای مشاهده لیست باید وارد شوید.');            retu;        }        window.location.href = $(this).attr('href');    });    // پردازش کلیک دکمه حذف از لیست علاقهمندیها    $(document).on('click', '.swb-remove-from-wishlist', function(e) {        e.preventDefault();        if (!wishlist_ajax_obj.is_logged_in) {            window.location.href = wishlist_ajax_obj.login_url;            retu;        }        var product_id = $(this).data('product-id');        var $this = $(this);        $.ajax({            url: wishlist_ajax_obj.ajax_url,            type: 'POST',            data: {                action: 'remove_from_wishlist',                product_id: product_id,                _ajax_nonce: wishlist_ajax_obj.nonce            },            success: function(response) {                if (response.success) {                    $this.closest('.swb-wishlist-box').remove(); // حذف آیتم از لیست                    if (response.data.is_empty) {                        $('.swb-wishlist-boxes').html('<p class="swb-empty-wishlist">لیست علاقهمندیهای شما خالی است.</p>');                    }                } else {                    alert(response.data.message);                }            },            error: function() {                alert('خطا در برقراری ارتباط با سرور.');            }        });    });});</script>```

1 نوشته - 1 participants

مشاهده متن کامل موضوع

سون لرن • آموزش...

ما را در سایت سون لرن • آموزش دنبال می‌کنید

برچسب: نویسنده: استخدام کار بازدید: 41 تاريخ: چهارشنبه 10 مرداد 1403 ساعت: 23:49

صفحه بندی

خبرنامه