امروز با گذاشتن کلی وقت افزودن به علاقه مندی ها را با کد برای یکی از دوستان انجام دادم که نیاز دیدم برای استفاده شما نیز اینجا قرار دهم
1- این کد را در فایل functions.php قالب قرار دهید:
همچنین یک فایل جاوااسکریپت به نام wishlist.js در پوشه js قالب ایجاد کرده و کد زیر را در آن قرار دهید:
حال کاربران میتوانند محصولات را به لیست علاقهمندیهای خود اضافه یا حذف کنند.
برای نمایش لیست علاقهمندیها با شورتکد [wishlist] قابل نمایش است.
1- این کد را در فایل functions.php قالب قرار دهید:
PHP:
function create_wishlist_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'wishlist';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS $table_name (
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
user_id BIGINT(20) UNSIGNED NOT NULL,
product_id BIGINT(20) UNSIGNED NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
add_action('after_setup_theme', 'create_wishlist_table');
function add_wishlist_button() {
global $product;
$product_id = $product->get_id();
$user_id = get_current_user_id();
global $wpdb;
$table_name = $wpdb->prefix . 'wishlist';
$exists = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $table_name WHERE user_id = %d AND product_id = %d", $user_id, $product_id));
$button_text = $exists ? 'حذف از علاقهمندیها' : 'افزودن به علاقهمندیها';
echo '<button class="wishlist-button" data-product-id="' . $product_id . '">' . $button_text . '</button>';
}
add_action('woocommerce_after_add_to_cart_button', 'add_wishlist_button');
function handle_wishlist_ajax() {
if (!is_user_logged_in()) {
wp_send_json_error('لطفاً ابتدا وارد شوید.');
}
$user_id = get_current_user_id();
$product_id = intval($_POST['product_id']);
global $wpdb;
$table_name = $wpdb->prefix . 'wishlist';
$exists = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $table_name WHERE user_id = %d AND product_id = %d", $user_id, $product_id));
if ($exists) {
$wpdb->delete($table_name, ['user_id' => $user_id, 'product_id' => $product_id]);
wp_send_json_success('محصول از علاقهمندیها حذف شد.');
} else {
$wpdb->insert($table_name, ['user_id' => $user_id, 'product_id' => $product_id]);
wp_send_json_success('محصول به علاقهمندیها افزوده شد.');
}
}
add_action('wp_ajax_handle_wishlist', 'handle_wishlist_ajax');
add_action('wp_ajax_nopriv_handle_wishlist', 'handle_wishlist_ajax');
function enqueue_wishlist_script() {
wp_enqueue_script('wishlist-script', get_template_directory_uri() . '/js/wishlist.js', ['jquery'], null, true);
wp_localize_script('wishlist-script', 'wishlist_ajax', [
'ajax_url' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('wishlist_nonce'),
]);
}
add_action('wp_enqueue_scripts', 'enqueue_wishlist_script');
function display_wishlist() {
if (!is_user_logged_in()) {
return 'لطفاً وارد حساب کاربری خود شوید.';
}
$user_id = get_current_user_id();
global $wpdb;
$table_name = $wpdb->prefix . 'wishlist';
$results = $wpdb->get_results($wpdb->prepare("SELECT product_id FROM $table_name WHERE user_id = %d", $user_id));
if (empty($results)) {
return 'لیست علاقهمندیها خالی است.';
}
$output = '<ul class="wishlist-items">';
foreach ($results as $row) {
$product = wc_get_product($row->product_id);
$output .= '<li><a href="' . get_permalink($product->get_id()) . '">' . $product->get_name() . '</a></li>';
}
$output .= '</ul>';
return $output;
}
add_shortcode('wishlist', 'display_wishlist');
همچنین یک فایل جاوااسکریپت به نام wishlist.js در پوشه js قالب ایجاد کرده و کد زیر را در آن قرار دهید:
JavaScript:
jQuery(document).ready(function ($) {
$('.wishlist-button').on('click', function () {
var button = $(this);
var product_id = button.data('product-id');
$.ajax({
url: wishlist_ajax.ajax_url,
type: 'POST',
data: {
action: 'handle_wishlist',
product_id: product_id,
},
success: function (response) {
if (response.success) {
alert(response.data);
button.text(
button.text() === 'افزودن به علاقهمندیها'
? 'حذف از علاقهمندیها'
: 'افزودن به علاقهمندیها'
);
} else {
alert(response.data);
}
},
});
});
});
حال کاربران میتوانند محصولات را به لیست علاقهمندیهای خود اضافه یا حذف کنند.
برای نمایش لیست علاقهمندیها با شورتکد [wishlist] قابل نمایش است.