Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
wp-content
/
plugins
/
royal-elementor-addons
/
classes
/
woocommerce
:
wpr-add-remove-from-compare.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace WprAddons\Classes; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } /** * WPR_Add_Remove_From_Compare setup * * @since 1.0 */ class WPR_Add_Remove_From_Compare { /** ** Constructor */ public function __construct() { // add_action('init', [$this, 'register_compare_cpt']); add_action( 'wp_ajax_add_to_compare',[$this, 'add_to_compare'] ); add_action( 'wp_ajax_nopriv_add_to_compare',[$this, 'add_to_compare'] ); add_action( 'wp_ajax_remove_from_compare', [$this, 'remove_from_compare'] ); add_action( 'wp_ajax_nopriv_remove_from_compare', [$this, 'remove_from_compare'] ); } // // Register Post Type // function register_compare_cpt() { // $args = array( // 'label' => esc_html__( 'Royal compare', 'wpr-addons' ), // 'public' => true, // 'publicly_queryable' => true, // 'rewrite' => false, // 'show_ui' => true, // 'show_in_menu' => true, // 'show_in_nav_menus' => false, // 'exclude_from_search' => true, // 'capability_type' => 'post', // 'supports' => array( 'title', 'editor', 'elementor' ), // 'hierarchical' => false, // ); // register_post_type( 'compare', $args ); // } function add_to_compare() { $nonce = $_POST['nonce']; if ( ! wp_verify_nonce( $nonce, 'wpr-addons-js' ) || ! isset( $_POST['product_id'] ) ) { return; } $product_id = intval( $_POST['product_id'] ); $user_id = get_current_user_id(); // $compare = get_user_meta( get_current_user_id(), 'wpr_compare', true ); // if ( ! $compare ) { // $compare = array(); // } // if ( in_array( $product_id, $compare ) ) { // wp_send_json_error( array( 'message' => esc_html__('Product is already in Compare.', 'wpr-addons') ) ); // return; // } // $compare[] = $product_id; // update_user_meta( get_current_user_id(), 'wpr_compare', $compare ); // NEW CODE if ($user_id > 0) { $compare = get_user_meta($user_id, 'wpr_compare', true); if (!$compare) { $compare = array(); } } else { $compare = $this->get_compare_from_cookie(); } if (in_array($product_id, $compare)) { wp_send_json_error(array('message' => esc_html__('Product is already in compare.', 'wpr-addons'))); return; } $compare[] = $product_id; if ($user_id > 0) { update_user_meta($user_id, 'wpr_compare', $compare); } else { $this->set_compare_to_cookie($compare); } wp_send_json_success(); } function remove_from_compare() { $nonce = $_POST['nonce']; if ( ! wp_verify_nonce( $nonce, 'wpr-addons-js' ) || ! isset( $_POST['product_id'] ) ) { return; } $product_id = intval( $_POST['product_id'] ); $user_id = get_current_user_id(); if ($user_id > 0) { $compare = get_user_meta($user_id, 'wpr_compare', true); if (!$compare) { $compare = array(); } } else { $compare = $this->get_compare_from_cookie(); } $compare = array_diff($compare, array($product_id)); if ($user_id > 0) { update_user_meta($user_id, 'wpr_compare', $compare); } else { $this->set_compare_to_cookie($compare); } // $compare = get_user_meta( get_current_user_id(), 'wpr_compare', true ); // if ( ! $compare ) { // $compare = array(); // } // $compare = array_diff( $compare, array( $product_id ) ); // update_user_meta( get_current_user_id(), 'wpr_compare', $compare ); wp_send_json_success(); } function get_compare_from_cookie() { if (isset($_COOKIE['wpr_compare'])) { return json_decode(stripslashes($_COOKIE['wpr_compare']), true); } else if ( isset($_COOKIE['wpr_compare_'. get_current_blog_id() .'']) ) { return json_decode(stripslashes($_COOKIE['wpr_compare_'. get_current_blog_id() .'']), true); } return array(); } function set_compare_to_cookie($compare) { if ( is_multisite() ) { setcookie('wpr_compare_'. get_current_blog_id() .'', json_encode($compare), time() + (86400 * 10), '/'); // Expires in 7 days } else { setcookie('wpr_compare', json_encode($compare), time() + (86400 * 10), '/'); // Expires in 7 days } } } new WPR_Add_Remove_From_Compare();