Груповий товар WooCommerce – це спеціальний тип товару, який дозволяє поєднувати кілька простих товарів в один, згрупувати їх, якщо вони мають спільні властивості, щоби спростити доступ до них. Відкривши сторінку з груповим товаром, ти можеш обрати кілька різних товарів, що входять у нього, обрати кількість кожного із товарів, та додати їх всі разом у кошик. Зручно, чи не так?
Але з груповими товарами може вийти невеличка плутанина, коли поруч відображаються групові товари та прості товари, які входять у них. Тобто ти можеш відкрити окремий простий товар та додати його в кошик, а можеш відкрити груповий товар і обрати той самий простий товар із групового. В загальних ситуацій це навіть плюс, коли той самий товар відображається в кількох місцях – більша імовірність, що він потрапить потенційному покупцю на очі 😂
Що ж робити, якщо ти не хочеш відображати той самий товар по кілька разів? Можна трішки переробити запит до бази даних, в результаті чого товари, які входять хоча б до одного групового товару, просто не будуть відображатися.
Всі приклади кодів традиційно розміщуємо у файлі functions.php поточної теми, якщо не знаєш, куди його іще вставити 😉
Приховання товарів, що входять у групу, зі сторінок категорій та атрибутів
Наступний уривок коду приховує товари, які входять хоча б в одну групу, зі сторінок категорій та атрибутів:
Допоміжні функції
Просто так знайти товари, які входять у групу, не вдасться – стандартних методів немає. Але ми завжди можемо дописати власну допоміжну функцію, яку я вже використав у коді вище – там вона називається get_grouped_children_ids. А виглядає вона отак:
Також, як можна помітити, якщо спробувати розібратися в коді – у нас незнайома функція get_parent_grouped_id. Вона отримує ID групового товару, в який входить поточний товар:
Бонус: правильна робота із плагіном Husky
Якщо ти використовуєш плагін HUSKY – Products Filter for WooCommerce Professional (колишній WOOF Products Filter) із увімкненою опцією "Try to ajaxify the shop", то відразу помітиш, що при перемиканні сторінок в пагінації даний код перестає працювати. Справа в тому, що в даному випадку плагін шукає товари не через загальний запит, а через свій власний, та ще й за допомогою Ajax. Тому для цього випадку треба додати ще один уривок коду, який працюватиме для пагінації тих же сторінок категорій та атрибутів:
Висновок
Приховати товари, які входять хоча б в один груповий товар, не так вже й складно, потрібно тільки знати, які конкретно хуки використати. Маю надію, що моя стаття стане у пригоді не одному WordPress-розробнику. А якщо вона тобі дійсно допомогла – виділи хвилинку часу, пошир її 😉
Дякую за увагу!
Прокоментувати
На сайті відображається лише твоє ім'я та коментар. Електронна пошта зберігається виключно для зв'язку з тобою за потреби та в жодному разі не передається стороннім особам.