У меня установлен простенький плагин для списка желаний, и я хочу сделать ajax удаление.
Нашёл на форуме разработчиков только готовую функцию, но как её использовать не знаю.
Есть такая форма (снизу кнопка удаления):
<form action="<?php echo esc_url($form_url); ?>" class="removestoped" method="post" autocomplete="off">
<?php do_action('tinvwl_before_wishlist_table', $wishlist); ?>
<table class="tinvwl-table-manage-list">
<tbody>
<?php do_action('tinvwl_wishlist_contents_before'); ?>
<?php
global $product, $post;
// store global product data.
$_product_tmp = $product;
// store global post data.
$_post_tmp = $post;
foreach ($products as $wl_product) {
if (empty($wl_product['data'])) {
continue;
}
// override global product data.
$product = apply_filters('tinvwl_wishlist_item', $wl_product['data']);
// override global post data.
$post = get_post($product->get_id());
unset($wl_product['data']);
if ($wl_product['quantity'] > 0 && apply_filters('tinvwl_wishlist_item_visible', true, $wl_product, $product)) {
$product_url = apply_filters('tinvwl_wishlist_item_url', $product->get_permalink(), $wl_product, $product);
do_action('tinvwl_wishlist_row_before', $wl_product, $product);
?>
<tr class="<?php echo esc_attr(apply_filters('tinvwl_wishlist_item_class', 'wishlist_item', $wl_product, $product)); ?>">
<td class="product-thumbnail">
<?php
$thumbnail = apply_filters('tinvwl_wishlist_item_thumbnail', $product->get_image(), $wl_product, $product);
if (!$product->is_visible()) {
echo $thumbnail; // WPCS: xss ok.
} else {
printf('<a href="%s">%s</a>', esc_url($product_url), $thumbnail); // WPCS: xss ok.
}
?>
</td>
<td class="product-name">
<?php
if (!$product->is_visible()) {
echo apply_filters('tinvwl_wishlist_item_name', is_callable(array(
$product,
'get_name'
)) ? $product->get_name() : $product->get_title(), $wl_product, $product) . ' '; // WPCS: xss ok.
} else {
echo apply_filters('tinvwl_wishlist_item_name', sprintf('<a href="%s">%s</a>', esc_url($product_url), is_callable(array(
$product,
'get_name'
)) ? $product->get_name() : $product->get_title()), $wl_product, $product); // WPCS: xss ok.
}
echo apply_filters('tinvwl_wishlist_item_meta_data', tinv_wishlist_get_item_data($product, $wl_product), $wl_product, $product); // WPCS: xss ok.
?>
<?php
echo apply_filters('tinvwl_wishlist_item_price', $product->get_price_html(), $wl_product, $product); // WPCS: xss ok.
?>
</td>
<td class="product-remove">
<button type="submit" name="tinvwl-remove"
value="<?php echo esc_attr($wl_product['ID']); ?>"
title="<?php _e('Remove', 'ti-woocommerce-wishlist') ?>"><i
class="ftinvwl ftinvwl-times"></i>
</button>
</td>
</tr>
<?php
do_action('tinvwl_wishlist_row_after', $wl_product, $product);
} // End if().
} // End foreach().
// restore global product data.
$product = $_product_tmp;
// restore global post data.
$post = $_post_tmp;
?>
<?php do_action('tinvwl_wishlist_contents_after'); ?>
</tbody>
</table>
</form>
При нажатии кнопки уделания открывается страница со списком желаний и этот продукт удаляется.
На форуме разработчиков нашёл топик, в котором поделились такой функцией:
function wishlistAjaxRemove() {
$wl = new TInvWL_Wishlist();
$wishlist = $wl->get_by_share_key($wl->get_sharekey());
$wlp = new TInvWL_Product($wishlist);
$products = $wlp->get_wishlist(array(
'ID' => $_POST["button"],
'count' => 100,
));
$titles = array();
foreach ($products as $product) {
if ($wlp->remove_product_from_wl($product['wishlist_id'], $product['product_id'], $product['variation_id'], $product['meta'])) {
$titles[] = sprintf(__('“%s”', 'ti-woocommerce-wishlist'), is_callable(array(
$product['data'],
'get_name'
)) ? $product['data']->get_name() : $product['data']->get_title());
}
}
return true;
wp_reset_postdata();
die();
}
И к нему прилагался скрипт для обновления списка желаний
function refreshWlShortcode() {
echo do_shortcode('[ti_wishlistsview]');
wp_reset_postdata();
die();
}
Я правильно понимаю, что нужно ещё на стороне js сделать скрипт для отправки?
Ссылка на топик:
https://wordpress.org/support/topic/ajax-remove-item/