Я создал простую форму, которую поместил на боковую панель с помощью шорткода. Мне нужно было это сделать, потому что наши теги представляют собой пары «ключ:значение», поэтому мне нужен фильтр, чтобы разбирать пары и группировать значения по клавишам в меню в стиле аккордеона. Затем мне нужно повторно собрать тег для отправки.
Код для этого приведен ниже (я не включил CSS и JS для функциональности аккордеона — он работает, поэтому, надеюсь, он не понадобится). здесь). Этот код работает, ЕСЛИ я хочу фильтровать только по одному Product_tag. Однако я пытаюсь изменить его, чтобы он работал для выбора нескольких Product_tags.
Этот код отправляет запрос в качестве аргумента в URL-адресе (т. е. «shop?product_tag=Tag»). Я думал просто посмотреть query_vars и предварительно проверить уже проверенный Product_tag. Затем, когда я проверяю второй тег, два аргумента product_tag будут отправлены через URL-адрес. Однако это не работает, поскольку query_vars получает только последний URL-адрес product_tag. Итак, если я использую «shop?product_tag=Tag1&product_tag=Tag2» в URL-адресе, в query_vars появится только Tag2 до Product_tag.
Поэтому должен быть другой способ изменить query_vars из моего form, чтобы я мог установить несколько флажков. Но я не могу понять, как это сделать. Кто-нибудь здесь знает волшебный хук/javascript для моего «onchange»?
function my_custom_tag_filter()
{
global $wp_query;
$return = '';
$query_vars = $wp_query->query_vars;
$tags = get_terms('product_tag');
$tagsbycategory = array();
if (!empty($tags) && !is_wp_error($tags)) {
foreach ($tags as $tag) {
$tagcategorypair = explode(":", $tag->name);
if (count($tagcategorypair) != 2) continue;
if (!array_key_exists($tagcategorypair[0], $tagsbycategory)) {
$tagsbycategory[$tagcategorypair[0]] = array();
}
$tagsbycategory[$tagcategorypair[0]][] = $tagcategorypair[1];
}
}
$return .= '
';
$keys = array_keys($tagsbycategory);
foreach ($keys as $key) {
$return .= '
' . $key . '
';
$values = $tagsbycategory[$key];
foreach ($values as $value) {
$argvalue = str_replace(' ', '-', $value);
$friendlyvalue = str_replace('/','',str_replace(' ', '', $value));
$id = $key . '-' . $friendlyvalue . '-check';
$return .= '
' . $value . '
';
}
$return .= '
';
}
if ($query_vars != null) {
if (array_key_exists("s", $query_vars)) {
$return .= '';
}
if (array_key_exists("orderby", $query_vars)) {
$return .= '
Подробнее здесь: https://stackoverflow.com/questions/784 ... e-in-sideb
Как изменить WC query_vars из формы пользовательского фильтра (короткий код на боковой панели)? ⇐ Php
Кемеровские программисты php общаются здесь
1716014236
Anonymous
Я создал простую форму, которую поместил на боковую панель с помощью шорткода. Мне нужно было это сделать, потому что наши теги представляют собой пары «ключ:значение», поэтому мне нужен фильтр, чтобы разбирать пары и группировать значения по клавишам в меню в стиле аккордеона. Затем мне нужно повторно собрать тег для отправки.
Код для этого приведен ниже (я не включил CSS и JS для функциональности аккордеона — он работает, поэтому, надеюсь, он не понадобится). здесь). Этот код работает, ЕСЛИ я хочу фильтровать только по одному Product_tag. Однако я пытаюсь изменить его, чтобы он работал для выбора нескольких Product_tags.
Этот код отправляет запрос в качестве аргумента в URL-адресе (т. е. «shop?product_tag=Tag»). Я думал просто посмотреть query_vars и предварительно проверить уже проверенный Product_tag. Затем, когда я проверяю второй тег, два аргумента product_tag будут отправлены через URL-адрес. Однако это не работает, поскольку query_vars получает только последний URL-адрес product_tag. Итак, если я использую «shop?product_tag=Tag1&product_tag=Tag2» в URL-адресе, в query_vars появится только Tag2 до Product_tag.
Поэтому должен быть другой способ изменить query_vars из моего form, чтобы я мог установить несколько флажков. Но я не могу понять, как это сделать. Кто-нибудь здесь знает волшебный хук/javascript для моего «onchange»?
function my_custom_tag_filter()
{
global $wp_query;
$return = '';
$query_vars = $wp_query->query_vars;
$tags = get_terms('product_tag');
$tagsbycategory = array();
if (!empty($tags) && !is_wp_error($tags)) {
foreach ($tags as $tag) {
$tagcategorypair = explode(":", $tag->name);
if (count($tagcategorypair) != 2) continue;
if (!array_key_exists($tagcategorypair[0], $tagsbycategory)) {
$tagsbycategory[$tagcategorypair[0]] = array();
}
$tagsbycategory[$tagcategorypair[0]][] = $tagcategorypair[1];
}
}
$return .= '
';
$keys = array_keys($tagsbycategory);
foreach ($keys as $key) {
$return .= '
' . $key . '
';
$values = $tagsbycategory[$key];
foreach ($values as $value) {
$argvalue = str_replace(' ', '-', $value);
$friendlyvalue = str_replace('/','',str_replace(' ', '', $value));
$id = $key . '-' . $friendlyvalue . '-check';
$return .= '
' . $value . '
';
}
$return .= '
';
}
if ($query_vars != null) {
if (array_key_exists("s", $query_vars)) {
$return .= '';
}
if (array_key_exists("orderby", $query_vars)) {
$return .= '
Подробнее здесь: [url]https://stackoverflow.com/questions/78498503/how-to-change-wc-query-vars-from-within-a-custom-filter-form-shortcode-in-sideb[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия