Перенаправить товар со склада на пользовательскую страницу

У меня есть магазин WooCommerce, и я продаю много продуктов только 1 штук для каждого.

После продажи уникального количества продукта, я показываю «Нет на складе» автоматически, но я хочу перенаправить эту страницу продукта на пользовательскую страницу.

Я много часов ищу плагин => Ничего.

У вас есть решение?

Благодарю.

1

Решение

Использование пользовательской функции подключено woocommerce_before_single_product Хук действия, позволит вам перенаправить на свою пользовательскую страницу, все продукты (страницы), когда продукт нет в наличии используя простой условный метод WC_product is_in_stock(), с этим очень компактным и эффективным кодом:

add_action('woocommerce_before_single_product', 'product_out_of_stock_redirect');
function product_out_of_stock_redirect(){
global $product;

// Set HERE the ID of your custom page  <==  <==  <==  <==  <==  <==  <==  <==  <==
$custom_page_id = 8; // But not a product page (see below)

if (!$product->is_in_stock()){
wp_redirect(get_permalink($custom_page_id));
exit(); // Always after wp_redirect() to avoid an error
}
}

Код помещается в файл function.php вашей активной дочерней темы (или темы) или также в любой файл плагина.

Вам нужно будет просто установить правильный идентификатор страницы для перенаправления (не страница продукта).


Обновить: Вы можете использовать классический WordPress wp действие крюк (если вы получили ошибку или белую страницу).

Здесь нам необходимо дополнительно настроить таргетинг на отдельные страницы продукта, а также получить экземпляр $product объект (с идентификатором сообщения).

Так что код будет:

add_action('wp', 'product_out_of_stock_redirect');
function product_out_of_stock_redirect(){
global $post;

// Set HERE the ID of your custom page  <==  <==  <==  <==  <==  <==  <==  <==  <==
$custom_page_id = 8;

if(is_product()){ // Targeting single product pages only
$product = wc_get_product($post->ID);// Getting an instance of product object
if (!$product->is_in_stock()){
wp_redirect(get_permalink($custom_page_id));
exit(); // Always after wp_redirect() to avoid an error
}
}
}

Код помещается в файл function.php вашей активной дочерней темы (или темы) или также в любой файл плагина.

Код протестирован и работает.

3

Другие решения

add_action('wp', 'wh_custom_redirect');

function wh_custom_redirect() {
//for product details page
if (is_product()) {
global $post;
$product = wc_get_product($post->ID);
if (!$product->is_in_stock()) {
wp_redirect('http://example.com'); //replace it with your URL
exit();
}
}
}

Код помещается в файл function.php вашей активной дочерней темы (или темы). Или также в любом файле плагина php.
Код протестирован и работает.

Надеюсь это поможет!

0

По вопросам рекламы [email protected]