Skip to content

Instantly share code, notes, and snippets.

@hssktm
Last active March 13, 2025 08:13
Show Gist options
  • Save hssktm/466a64b34f0fab72a3d4baa99833a9d5 to your computer and use it in GitHub Desktop.
Save hssktm/466a64b34f0fab72a3d4baa99833a9d5 to your computer and use it in GitHub Desktop.
Contains JSON and Code to paste into code plugin
//JSON OXYGEN BUILDER
{"component":{"id":216,"name":"ct_div_block","options":{"ct_id":216,"ct_parent":100004,"selector":"div_block-216-53","original":{"padding-bottom":"0"},"nicename":"Wishlist Elements","activeselector":false},"depth":5,"children":[{"id":217,"name":"ct_code_block","options":{"ct_id":217,"ct_parent":216,"selector":"code_block-217-53","nicename":"Code Wishlist Paste Global","activeselector":false,"original":{"code-php":"<script>\n\ndocument.addEventListener('DOMContentLoaded', function() {\n if (window.angular) return;\n assignButtonEvents();\n\n function assignButtonEvents() {\n const wishlistButtons = document.querySelectorAll('.oxy-add-to-wishlist, .oxy-remove-from-wishlist');\n\n wishlistButtons.forEach(button => {\n button.removeEventListener('click', handleWishlistButtonClick);\n button.addEventListener('click', handleWishlistButtonClick);\n });\n }\n\n function handleWishlistButtonClick(event) {\n const button = event.currentTarget;\n const productId = button.dataset.productId;\n const action = button.classList.contains('oxy-add-to-wishlist') ? 'add' : 'remove';\n\n const wishlistContainers = document.querySelectorAll('.oxy-wishlist');\n wishlistContainers.forEach(container => {\n if (container.dataset.productId === productId) {\n container.classList.add('loading');\n }\n });\n\n updateWishlist(productId, action);\n }\n\n function updateWishlist(productId, action) {\n const userId = <?php echo json_encode(get_current_user_id()); ?>;\n const wishlistContainers = document.querySelectorAll('.oxy-wishlist');\n\n fetch('<?php echo esc_url_raw(rest_url() . 'wp/v2/wishlist'); ?>', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-WP-Nonce': '<?php echo wp_create_nonce('wp_rest'); ?>'\n },\n body: JSON.stringify({\n user_id: userId,\n product_id: productId,\n action: action\n })\n })\n .then(response => response.json())\n .then(data => {\n wishlistContainers.forEach(container => {\n if (container.dataset.productId === productId) {\n if (data.success) {\n if (action === 'add') {\n container.classList.add('add-to-list');\n container.classList.remove('remove-to-list');\n } else if (action === 'remove') {\n container.classList.remove('add-to-list');\n container.classList.add('remove-to-list');\n }\n } else {\n // Handle the error case if needed\n }\n }\n });\n\n updateWishlistCart(productId); // Pass productId to remove 'loading' class after updating the cart\n\n })\n .catch(error => {\n console.error('Error:', error);\n\n wishlistContainers.forEach(container => {\n if (container.dataset.productId === productId) {\n container.classList.remove('loading'); // Remove 'loading' class in case of error\n }\n });\n });\n }\n\n function updateWishlistCart(productId) {\n const wishlistCartDivs = jQuery('.oxy-wishlist-cart');\n\n wishlistCartDivs.each(function() {\n const cartId = jQuery(this).data('cart');\n jQuery.ajax({\n url: location.href,\n success: function(data) {\n const newContent = jQuery(data).find(\".oxy-wishlist-cart[data-cart='\" + cartId + \"']\").html();\n jQuery(\".oxy-wishlist-cart[data-cart='\" + cartId + \"']\").html(newContent);\n assignButtonEvents();\n\n if (typeof oxy_load_wishlist === 'function') {\n\t\t\t oxy_load_wishlist();\n\t \t}\n \n // Remove 'loading' class after updating the wishlist cart\n const wishlistContainers = document.querySelectorAll('.oxy-wishlist');\n wishlistContainers.forEach(container => {\n if (container.dataset.productId === productId) {\n container.classList.remove('loading');\n }\n });\n }\n });\n });\n }\n});\n\n \n</script>","code-js":"","code-css":".loading .oxy-wishlist-loading {\n display: flex !important;\n}\n\n.oxy-wishlist-loading {\n animation: rotate-animation 1.5s infinite linear;\n}\n\n@keyframes rotate-animation {\n\t0% {\n\t\ttransform: rotate(0deg);\n }\n 50% {\n\t\ttransform: rotate(180deg);\n\t}\n\t100% {\n\t\ttransform: rotate(360deg);\n\t}\n}\n\n.ct-component .oxy-wishlist-loading {\n position: relative;\n display: flex;\n}"}},"depth":6},{"id":218,"name":"ct_div_block","options":{"ct_id":218,"ct_parent":216,"selector":"div_block-218-53","original":{"custom-attributes":[{"name":"data-product-id","value":"[oxygen ct_sign_sha256='e50d3d5d2abffa995d621f2180036c2dcda6d6c1ebc6663fe44dd116cf983dee' data='phpfunction' function='get_the_ID' ]"},{"name":"data-cart","value":"[oxygen ct_sign_sha256='e50d3d5d2abffa995d621f2180036c2dcda6d6c1ebc6663fe44dd116cf983dee' data='phpfunction' function='get_the_ID' ]"}]},"nicename":"Wishlist Wrap","classes":["oxy-wishlist","oxy-wishlist-cart","oxy-wishlist-wrap"]},"depth":6,"children":[{"id":219,"name":"ct_div_block","options":{"ct_id":219,"ct_parent":218,"selector":"div_block-219-53","original":{"custom-attributes":[{"name":"data-product-id","value":"[oxygen ct_sign_sha256='e50d3d5d2abffa995d621f2180036c2dcda6d6c1ebc6663fe44dd116cf983dee' data='phpfunction' function='get_the_ID' ]"}],"globalconditions":[{"name":"ZZOXYVSBDYNAMIC","operator":0,"value":"false","oxycode":"[oxygen ct_sign_sha256='8ff3d9c145fc89c78aae2c7293c52db1980a9d5576047dd3c28db5c65d9ad701' data='phpfunction' function='if_wishlist_true' ]"}]},"nicename":"Wishlist Add","classes":["oxy-add-to-wishlist","oxy-wishlist-btn","oxy-wishlist-add"]},"depth":7,"children":[{"id":220,"name":"ct_fancy_icon","options":{"ct_id":220,"ct_parent":219,"selector":"fancy_icon-220-53","original":{"icon-id":"Iconsicon-heart"},"nicename":"Icon (#1070)","classes":["oxy-wishlist-icon"]},"depth":8}]},{"id":221,"name":"ct_div_block","options":{"ct_id":221,"ct_parent":218,"selector":"div_block-221-53","original":{"custom-attributes":[{"name":"data-product-id","value":"[oxygen ct_sign_sha256='e50d3d5d2abffa995d621f2180036c2dcda6d6c1ebc6663fe44dd116cf983dee' data='phpfunction' function='get_the_ID' ]"}],"globalconditions":[{"name":"ZZOXYVSBDYNAMIC","operator":0,"value":"true","oxycode":"[oxygen ct_sign_sha256='8ff3d9c145fc89c78aae2c7293c52db1980a9d5576047dd3c28db5c65d9ad701' data='phpfunction' function='if_wishlist_true' ]"}]},"nicename":"Wishlist Remove","classes":["oxy-remove-from-wishlist","oxy-wishlist-btn","oxy-wishlist-remove"]},"depth":7,"children":[{"id":222,"name":"ct_fancy_icon","options":{"ct_id":222,"ct_parent":221,"selector":"fancy_icon-222-53","original":{"icon-id":"Iconsicon-heart"},"nicename":"Icon (#1071)","classes":["oxy-wishlist-icon","oxy-wishlist-icon-remove"]},"depth":8}]},{"id":223,"name":"ct_div_block","options":{"ct_id":223,"ct_parent":218,"selector":"div_block-223-53","original":{"custom-attributes":[{"name":"data-product-id","value":"[oxygen ct_sign_sha256='e50d3d5d2abffa995d621f2180036c2dcda6d6c1ebc6663fe44dd116cf983dee' data='phpfunction' function='get_the_ID' ]"}]},"nicename":"Wishlist Loading","classes":["oxy-add-to-wishlist","oxy-wishlist-btn","oxy-wishlist-loading"]},"depth":7,"children":[{"id":224,"name":"ct_fancy_icon","options":{"ct_id":224,"ct_parent":223,"selector":"fancy_icon-224-53","original":{"icon-id":"Iconsicon-loader"},"nicename":"Icon (#1070)","classes":["oxy-wishlist-icon","oxy-wishlist-icon-loading"]},"depth":8}]}]},{"id":225,"name":"ct_div_block","options":{"ct_id":225,"ct_parent":216,"selector":"div_block-225-53","original":{"custom-attributes":[{"name":"data-cart","value":"a01"}]},"nicename":"List","classes":["oxy-wishlist-cart","oxy-wishlist-list"]},"depth":6,"children":[{"id":226,"name":"ct_div_block","options":{"ct_id":226,"ct_parent":225,"selector":"div_block-226-53","original":{},"nicename":"Icon List","classes":["oxy-wishlist-list-icon-wrap"]},"depth":7,"children":[{"id":227,"name":"ct_text_block","options":{"ct_id":227,"ct_parent":226,"selector":"text_block-227-53","original":{},"nicename":"Count","ct_content":"<span id=\"ct-placeholder-228\"></span>","classes":["oxy-wishlist-list-count"]},"depth":8,"children":[{"id":228,"name":"ct_span","options":{"ct_id":228,"ct_parent":227,"selector":"span-228-53","original":{},"nicename":"Span (#1185)","ct_content":"[oxygen data='phpfunction' function='oxy_count_wishlist']"},"depth":9}]},{"id":229,"name":"ct_fancy_icon","options":{"ct_id":229,"ct_parent":226,"selector":"fancy_icon-229-53","original":{"icon-id":"Iconsicon-heart"},"nicename":"Icon (#1193)","classes":["oxy-wishlist-list-icon"]},"depth":8}]}]},{"id":230,"name":"ct_div_block","options":{"ct_id":230,"ct_parent":216,"selector":"div_block-230-53","original":{"custom-attributes":[{"name":"data-cart","value":"a02"}]},"nicename":"Compare Section","classes":["oxy-wishlist-loop","oxy-wishlist-cart"]},"depth":6,"children":[{"id":231,"name":"oxy_dynamic_list","options":{"ct_id":231,"ct_parent":230,"selector":"_dynamic_list-231-53","original":{"wp_query":"advanced","wp_query_advanced_preset":"Custom Settings","wp_query_advanced":[{"key":"post_type","values":[{"value":"product"}]},{"key":"post__in","values":[{"value":"[oxygen data=\"phpfunction\" function=\"call_ids_wishlist\" arguments=\",\"]"}]}]},"nicename":"Repeater (#1195)"},"depth":7,"children":[{"id":232,"name":"ct_div_block","options":{"ct_id":232,"ct_parent":231,"selector":"div_block-232-53","original":{"padding-top":"20","padding-right":"20","padding-bottom":"20","padding-left":"20","border-bottom-width":"1","border-bottom-style":"solid","border-bottom-color":"rgba(0,0,0,0.09)","flex-direction":"row","display":"flex","justify-content":"space-between","text-align":"right"},"nicename":"Div (#1196)"},"depth":8,"children":[{"id":233,"name":"ct_image","options":{"ct_id":233,"ct_parent":232,"selector":"image-233-53","original":{"image_type":"2","attachment_size":"full","attachment_id":"[oxygen data='featured_image_id']","attachment_height":768,"attachment_width":768,"attachment_url":"http://shop1.local/wp-content/uploads/2024/06/shop-img-49-768x768-1.jpg","width":"100"},"nicename":"Image (#1201)"},"depth":9},{"id":234,"name":"ct_div_block","options":{"ct_id":234,"ct_parent":232,"selector":"div_block-234-53","original":{"custom-attributes":[{"name":"data-product-id","value":"[oxygen ct_sign_sha256='e50d3d5d2abffa995d621f2180036c2dcda6d6c1ebc6663fe44dd116cf983dee' data='phpfunction' function='get_the_ID' ]"},{"name":"data-cart","value":"[oxygen ct_sign_sha256='e50d3d5d2abffa995d621f2180036c2dcda6d6c1ebc6663fe44dd116cf983dee' data='phpfunction' function='get_the_ID' ]"}]},"nicename":"Wishlist Wrap","classes":["oxy-wishlist","oxy-wishlist-cart","oxy-wishlist-wrap"]},"depth":9,"children":[{"id":235,"name":"ct_div_block","options":{"ct_id":235,"ct_parent":234,"selector":"div_block-235-53","original":{"custom-attributes":[{"name":"data-product-id","value":"[oxygen ct_sign_sha256='e50d3d5d2abffa995d621f2180036c2dcda6d6c1ebc6663fe44dd116cf983dee' data='phpfunction' function='get_the_ID' ]"}],"globalconditions":[{"name":"ZZOXYVSBDYNAMIC","operator":0,"value":"false","oxycode":"[oxygen ct_sign_sha256='8ff3d9c145fc89c78aae2c7293c52db1980a9d5576047dd3c28db5c65d9ad701' data='phpfunction' function='if_wishlist_true' ]"}]},"nicename":"Wishlist Add","classes":["oxy-add-to-wishlist","oxy-wishlist-btn","oxy-wishlist-add"]},"depth":10,"children":[{"id":236,"name":"ct_fancy_icon","options":{"ct_id":236,"ct_parent":235,"selector":"fancy_icon-236-53","original":{"icon-id":"Iconsicon-heart"},"nicename":"Icon (#1070)","classes":["oxy-wishlist-icon"]},"depth":11}]},{"id":237,"name":"ct_div_block","options":{"ct_id":237,"ct_parent":234,"selector":"div_block-237-53","original":{"custom-attributes":[{"name":"data-product-id","value":"[oxygen ct_sign_sha256='e50d3d5d2abffa995d621f2180036c2dcda6d6c1ebc6663fe44dd116cf983dee' data='phpfunction' function='get_the_ID' ]"}],"globalconditions":[{"name":"ZZOXYVSBDYNAMIC","operator":0,"value":"true","oxycode":"[oxygen ct_sign_sha256='8ff3d9c145fc89c78aae2c7293c52db1980a9d5576047dd3c28db5c65d9ad701' data='phpfunction' function='if_wishlist_true' ]"}]},"nicename":"Wishlist Remove","classes":["oxy-remove-from-wishlist","oxy-wishlist-btn","oxy-wishlist-remove"]},"depth":10,"children":[{"id":238,"name":"ct_fancy_icon","options":{"ct_id":238,"ct_parent":237,"selector":"fancy_icon-238-53","original":{"icon-id":"Iconsicon-heart"},"nicename":"Icon (#1071)","classes":["oxy-wishlist-icon","oxy-wishlist-icon-remove"]},"depth":11}]},{"id":239,"name":"ct_div_block","options":{"ct_id":239,"ct_parent":234,"selector":"div_block-239-53","original":{"custom-attributes":[{"name":"data-product-id","value":"[oxygen ct_sign_sha256='e50d3d5d2abffa995d621f2180036c2dcda6d6c1ebc6663fe44dd116cf983dee' data='phpfunction' function='get_the_ID' ]"}]},"nicename":"Wishlist Loading","classes":["oxy-add-to-wishlist","oxy-wishlist-btn","oxy-wishlist-loading"]},"depth":10,"children":[{"id":240,"name":"ct_fancy_icon","options":{"ct_id":240,"ct_parent":239,"selector":"fancy_icon-240-53","original":{"icon-id":"Iconsicon-loader"},"nicename":"Icon (#1070)","classes":["oxy-wishlist-icon","oxy-wishlist-icon-loading"]},"depth":11}]}]}]}]}]}]},"classes":{"oxy-wishlist":{"key":"oxy-wishlist","original":{"selector-locked":"true"}},"oxy-wishlist-cart":{"key":"oxy-wishlist-cart","original":{"selector-locked":"true"}},"oxy-wishlist-wrap":{"key":"oxy-wishlist-wrap","original":{"position":"relative"}},"oxy-add-to-wishlist":{"key":"oxy-add-to-wishlist","original":{"selector-locked":"true"}},"oxy-wishlist-btn":{"key":"oxy-wishlist-btn","original":{"flex-direction":"column","display":"flex","align-items":"center","justify-content":"center","width":"40","height":"40","border-radius":"1000","background-color":"#ffffff","border-top-style":"solid","border-right-style":"solid","border-bottom-style":"solid","border-left-style":"solid","border-all-style":"solid","border-top-width":"1","border-right-width":"1","border-bottom-width":"1","border-left-width":"1","border-all-width":"1","border-top-color":"rgba(0,0,0,0.09)","border-right-color":"rgba(0,0,0,0.09)","border-bottom-color":"rgba(0,0,0,0.09)","border-left-color":"rgba(0,0,0,0.09)","border-all-color":"rgba(0,0,0,0.09)","custom-css":"cursor: pointer;"}},"oxy-wishlist-add":{"key":"oxy-wishlist-add","original":{}},"oxy-wishlist-icon":{"key":"oxy-wishlist-icon","original":{"icon-color":"#1d3daf","icon-size":"20"}},"oxy-remove-from-wishlist":{"key":"oxy-remove-from-wishlist","original":{"selector-locked":"true"}},"oxy-wishlist-remove":{"key":"oxy-wishlist-remove","original":{"background-color":"#1d3daf"}},"oxy-wishlist-icon-remove":{"key":"oxy-wishlist-icon-remove","original":{"icon-color":"#ffffff","icon-size":"20"}},"oxy-wishlist-loading":{"key":"oxy-wishlist-loading","original":{"display":"none","background-color":"#1d3daf","position":"absolute"}},"oxy-wishlist-icon-loading":{"key":"oxy-wishlist-icon-loading","original":{"icon-color":"#f8f8f8","icon-size":"20"}},"oxy-wishlist-list":{"key":"oxy-wishlist-list","original":{"selector-locked":"false"}},"oxy-wishlist-list-icon-wrap":{"key":"oxy-wishlist-list-icon-wrap","original":{"position":"relative","width":"35","height":"35","flex-direction":"column","display":"flex","align-items":"center","justify-content":"center","border-radius":"1000","background-color":"#f8f8f8"}},"oxy-wishlist-list-count":{"key":"oxy-wishlist-list-count","original":{"position":"absolute","top":"-3","right":"-7","line-height":"1","width":"20","height":"20","display":"flex","align-items":"center","justify-content":"center","min-height":"20","min-width":"20","border-radius":"100","font-size":"12","background-color":"#1d3daf","color":"#ffffff"}},"oxy-wishlist-list-icon":{"key":"oxy-wishlist-list-icon","original":{"icon-size":"20","icon-color":"#1d3daf"}},"oxy-wishlist-loop":{"key":"oxy-wishlist-loop","original":{"width-unit":"%","width":"100"}}}}
//Paste Code
function oxy_count_wishlist() {
// Obtenemos el ID del usuario actual
$user_id = get_current_user_id();
// Verificamos si el usuario está conectado
if (!$user_id) {
return 0; // Si no hay usuario conectado, retornamos 0
}
// Obtenemos los valores de la meta key 'oxy-wishlist' del usuario actual
$wishlist = get_user_meta($user_id, 'oxy-wishlist', true);
// Verificamos si hay valores en la lista de deseos
if (empty($wishlist)) {
return 0; // Si no hay valores, retornamos 0
}
// Convertimos la cadena separada por comas en un array y contamos los elementos
$wishlist_items = explode(',', $wishlist);
$count = count($wishlist_items);
return $count;
}
function call_ids_wishlist() {
$user_id = get_current_user_id();
if ( $user_id ) {
$wishlist_ids = get_user_meta( $user_id, 'oxy-wishlist', true );
return $wishlist_ids ? $wishlist_ids : null;
}
return null;
}
function if_wishlist_true() {
$user_id = get_current_user_id();
$post_id = get_the_ID();
if ( $user_id && $post_id ) {
$wishlist_ids_csv = get_user_meta( $user_id, 'oxy-wishlist', true );
$wishlist_ids = ! empty( $wishlist_ids_csv ) ? explode( ',', $wishlist_ids_csv ) : array();
if ( in_array( $post_id, $wishlist_ids ) ) {
return "true";
}
}
return "false";
}
function register_wishlist_endpoint() {
register_rest_route('wp/v2', '/wishlist', array(
'methods' => 'POST',
'callback' => 'update_wishlist',
'permission_callback' => function () {
return is_user_logged_in();
},
));
}
add_action('rest_api_init', 'register_wishlist_endpoint');
function update_wishlist($request) {
$user_id = absint($request->get_param('user_id'));
$product_id = absint($request->get_param('product_id'));
$action = sanitize_text_field($request->get_param('action'));
if (!$user_id || !$product_id || !in_array($action, ['add', 'remove'])) {
return rest_ensure_response(array('success' => false, 'message' => 'Datos inválidos'));
}
$wishlist = get_user_meta($user_id, 'oxy-wishlist', true);
$wishlist_array = $wishlist ? explode(',', $wishlist) : array();
if ($action === 'add') {
if (!in_array($product_id, $wishlist_array)) {
$wishlist_array[] = $product_id;
}
} elseif ($action === 'remove') {
$key = array_search($product_id, $wishlist_array);
if ($key !== false) {
unset($wishlist_array[$key]);
}
}
$wishlist = implode(',', $wishlist_array);
update_user_meta($user_id, 'oxy-wishlist', $wishlist);
return rest_ensure_response(array('success' => true));
}
/* //Uncomment and save to remove the Wishlist meta key
add_action('reset_oxy_wishlist_action', 'reset_oxy_wishlist');
function reset_oxy_wishlist() {
$users = get_users();
foreach ($users as $user) {
delete_user_meta($user->ID, 'oxy-wishlist');
}
}
do_action('reset_oxy_wishlist_action');
echo reset_oxy_wishlist();
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment