@Support23

Как использовать функцию в wordpress?

У меня установлен простенький плагин для списка желаний, и я хочу сделать 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) . '&nbsp;'; // 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(__('&ldquo;%s&rdquo;', '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/
  • Вопрос задан
  • 76 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы