Как в WordPress сделать атрибуты как в Woocommerce?

Ссылка скопирована
1 ответ

В общем это структура будущих фильтров:

Как в Wordpress сделать атрибуты как в Woocommerce?

Фильтр не отрабатывает если я этажность и количество спален засуну в одну таксономию. Посмотрел в вукомерсе вроде как есть атрибуты и под каждый атрибут создается своя таксономия. Мне придется в ручную создавать таксономии этажность и количество спален? Или есть какое то решение

Дополнительно:

Зачем таксономия, когда это все можно указать в произвольных полях и фильтровать по ним

  • KingAnton, Да я тоже так думаю, но заказчику нужно чтобы были еще страницы, например: одноэтажные дома
  • KingAnton, Как тут https://kst-dom.ru/
  • Фильтр не отрабатывает если я этажность и количество спален засуну в одну таксономию.

    Не стоит совершенно разные свойства засовывать в одну таксономию. Это противоречит смыслу таксономии как таковой.

    Зачем таксономия, когда это все можно указать в произвольных полях

    Фильтрации и сортировки по произвольным полям в Вордпрессе очень тяжелые и тормозные операции из-за особенностей реализации хранения данных. Зато произвольные поля быстрей и проще для ввода и вывода неструктурированных атрибутов сущностей. С формализованными атрибутами таксономии справляются гораздо лучше.

  • YBB, Не могу додумать структуру.
    Т.е мне создать отдельные таксономии для категорий, этажности и количества спален? Просят сделать как тут +- https://kst-dom.ru/
  • Т.е мне создать отдельные таксономии для категорий, этажности и количества спален?

    Да. По логике вещей этажность, количество спален, кол-во санузлов, материал и т.д. - это все таксономии.
    1, 2 и т.д. - термы таксономии этажность
    1, 2 и т.д. - термы таксономии кол-во спален
    кирпич, брус и т.д. - термы таксономии материал
    и т.д. и т.п.

    Стоит иметь в виду, что не стоит использовать цифровые слаги и что одинаковые слаги у разных таксономий движок может не пропустить.

    Просят сделать как тут

    Ненавижу такую постановку вопроса!

  • YBB, Спасибо, добрый человек)

    Указал ссылку, чтобы было понимание. Потому что я бы сделал просто доп.полями через ACF и вывел в фильтр. Но заказчику нужно чтобы можно было перейти (например из меню) на страницу этого фильтра и поэтому на ум приходит только термы

  • Ответы:

    Или есть какое то решение

    Произвольная таксономия или произвольные поля.
    Но я бы рекомендовал первое, тк у ПП нет индекса и при сложных выборках могут возникнуть проблемы.

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Игорь Волков Ответ

    Да, если свойства должны иметь свои посадочные страницы вроде “одноэтажные дома”, “дома с 3 спальнями”, “дома из газобетона”, то лучше делать отдельные таксономии под разные смысловые свойства. Не стоит складывать этажность и количество спален в одну таксономию: это разные признаки, и фильтр потом будет путаться.

    Логика WooCommerce с атрибутами как раз такая: каждый атрибут — отдельная таксономия. Для Вашего типа объектов можно сделать аналогично:

    • house_floors — этажность;
    • house_bedrooms — количество спален;
    • house_material — материал;
    • house_area — диапазон площади, если нужны SEO-страницы;
    • цена/площадь числом — лучше в meta fields, если нужна сортировка по числу.

    Если значение должно иметь страницу архива и SEO-текст, используйте таксономию. Если значение нужно только для сортировки/диапазона, используйте произвольное поле. Например, точная площадь и цена — meta, а “одноэтажные дома” — taxonomy.

    Регистрация таксономии:

    register_taxonomy('house_floors', ['house'], [
        'label' => 'Этажность',
        'public' => true,
        'hierarchical' => false,
        'rewrite' => ['slug' => 'floors'],
        'show_in_rest' => true,
    ]);

    register_taxonomy('house_floors', ['house'], [ 'label' => 'Этажность', 'public' => true, 'hierarchical' => false, 'rewrite' => ['slug' => 'floors'], 'show_in_rest' => true, ]);

    Фильтр по нескольким таксономиям строится через tax_query с AND. Тогда можно выбрать этажность и спальни одновременно.

    Итог: да, таксономии придётся создать отдельно, если Вы хотите нормальную архитектуру, фильтры и SEO-страницы. Это не минус, а правильная модель данных. Не копируйте WooCommerce буквально, но принцип “одно свойство — одна таксономия” здесь верный.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно