• Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Решено Сортировка и отображение товара "нет в наличии"

igor.gayyar

Опытный
Добрый день
Подскажите, пожалуйста, что нужно прописать в function.php или как сделать, чтобы товары со статусом нет в наличии всегда отображались в конце списка товаров и были немного прозрачны(картинки) (opacity: 0.5)?
Но при этом не сбивалась моя стандартная сортировка товаров установленная в woocommerce?
Никак не могу сделать такое..
http://magickids.com.ua/shop/
 

igor.gayyar

Опытный
Я нашел такой код:

<?php /**
* Order product collections by stock status, instock products first.
*/
class iWC_Orderby_Stock_Status
{

public function __construct()
{
// Check if WooCommerce is active
if (in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')))) {
add_filter('posts_clauses', array($this, 'order_by_stock_status'), 2000);
}
}

public function order_by_stock_status($posts_clauses)
{
global $wpdb;
// only change query on WooCommerce loops
if (is_woocommerce() && (is_shop() || is_product_category() || is_product_tag())) {
$posts_clauses['join'] .= " INNER JOIN $wpdb->postmeta istockstatus ON ($wpdb->posts.ID = istockstatus.post_id) ";
$posts_clauses['orderby'] = " istockstatus.meta_value ASC, " . $posts_clauses['orderby'];
$posts_clauses['where'] = " AND istockstatus.meta_key = '_stock_status' AND istockstatus.meta_value <> '' " . $posts_clauses['where'];
}
return $posts_clauses;
}
}

new iWC_Orderby_Stock_Status;

?>


он работает, но не до конца... на страницах с брендами(торговыми марками) он не работает...
например:
http://magickids.com.ua/brand/000144/

так же не могу применить прозрачность..
поможете?
 

igor.gayyar

Опытный
а не подскажете еще почему на страницах с торговыми марками код не работает? Наверное в функции что-то дописать мне нужно?
 

artemkomarov

Специалист
Местный
а не подскажете еще почему на страницах с торговыми марками код не работает?
Наверняка не знаю но думаю что бренд это у вас кастомная таксономия, а ваш скрипт проверяет только на наличие магазина категории и тегов. Ищите в сторону сортировки кастомных таксономий или определения что это есть таксономия. https://codex.wordpress.org/Function_Reference/is_tax
 

igor.gayyar

Опытный
а Вы не подскажете еще как убрать кнопку "В корзину", если товара нет в наличии, а то смотрится как-то противоречиво...
 

artemkomarov

Специалист
Местный
а Вы не подскажете еще как убрать кнопку "В корзину", если товара нет в наличии, а то смотрится как-то противоречиво...
Код:
li.outofstock {
    opacity: .35;
    pointer-events: none; // запретить открытие
}

li.outofstock a.button {
   display: none;
}
 

igor.gayyar

Опытный
никак отобразить товары со статусом "нет в наличии" на страницах бренда в конце списка (((
 
Сверху Снизу