Значит буду пытаться исправлять 🙂
Но почему элемент массива $postarr['tax_input']['groupasset']
не существует?, если таксономия groupasset зарегистрирована, термины её — вставлены wp_insert_term(). Не подскажете как можно устранить данные нотисы ?
Модератор
Юрій
(@yube)
Но почему элемент массива $postarr[‘tax_input’][‘groupasset’] не существует?
Кто его знает. Возможно, это как-то связано с дефолтным термом для таксономии, типа, должен быть, но его нет.
Не подскажете как можно устранить данные нотисы ?
Добавить условие isset($postarr[‘tax_input’][ $taxonomy ]) перед is_array. Но поскольку этот код в ядре, то правка проживет ровно до первого обновления.
@yube , я кажется разобрался с данными нотисами, но вопрос остался.
К типу записи asset привязано 3 таксономии — country, groupasset, employer. Таксы и записи я регистрирую в functions.php и у каждой таксы при регистрации указываю атрибут 'default_term'
. По той таксе, которая регистрируется первой из трех привязанных к записи, нотис не возникает; но именно та, которая регистрируется первой, т.е. если меняю порядок регистрации, то и нотисы вида Undefined index: таксономия
соответственно меняются и нет нотиса только по первой зарегистрированной таксе, которая привязана к этому типу записи.
Не подскажете, почему так может получаться ? Можно ведь использовать ‘default_term’ для всех таксономий, а не только для одной ?
Модератор
Юрій
(@yube)
Можно ведь использовать ‘default_term’ для всех таксономий, а не только для одной ?
Теоретически — да, а практически — хз. Это новая фишка, я с ней еще не сталкивался.
@yube , доброго времени суток ) сразу прошу прощения за беспокойство
Подходя к завершению данного вопроса по реализации каталога продукции, столкнулся с проблемой вывода всех поставщиков и продавцов по определенной категории товаров (как Вы и советовали, товары у меня — это записи в wp_posts, продавцы и поставщики — это термины соответствующих таксономий в wp_terms, привязанные к этим товарам; у каждого товара есть свой производитель и поставщик, но у разных товаров производители и поставщики могут совпадать и при этом они являются разными терминами в БД). Подскажите, пожалуйста, как можно извлечь весь список продавцов определенной категории товаров, не дублируя их при этом. Не пойму как реализовать эту задачу, пытаюсь с помощью get_terms()
, но одинаковые продавцы дублируются т.к. это разные термины в БД:
$terms = get_terms( [
'hide_empty' => false,
'orderby' => 'name',
'hierarchical'=> false,
'parent' => $group_material,
'order' => 'ASC',
'taxonomy' => 'seller',
] );
Может быть как то можно их анализировать по полю name каждого термина, но как… или есть другой способ? подскажите, пожалуйста
Если выразиться проще — не могу извлечь все термины определенного типа записи так, чтобы эти термины не повторялись т.е. записи могут иметь термины с одинаковым name, description и т.д. но с разным term_id. Не могу понять как извлекать такие «повторяющиеся» термины только один раз… может кто подскажет.
Буду рад любому комментарию или подсказке в каком направлении думать.
Заранее спасибо
@yube , может быть у Вас будет какая-нибудь идея ?) зашел в тупик..
ps еще раз извините, так сказать последняя надежда
Модератор
Юрій
(@yube)
«Фильтруйте» в php, типа
$uniq_terms = [];
foreach ( $terms as $term ) {
$uniq_terms[$term->slug] = $term;
}
или сделайте свой SQL-запрос по образу и подобию порождаемого WP, только с GROUP BY slug
(или name)
@yube , спасибо огромное, пытаюсь сделать свой SQL-запрос по образу и подобию порождаемого WP. Для постов (объекта WP_Query) существует фильтр posts_groupby
, чтобы изменять GROUP BY
часть SQL запроса. Вы не подскажете — для терминов ничего такого подобного не существует ? Т.е. нужно посредством $wpdb
писать свой запрос, чтобы изменить результат, который формирует функция get_terms()
?
Модератор
Юрій
(@yube)
Под «свой запрос» я имел в виду использование $wpdb
@yube , понял, спасибо. Разбираюсь с метаданными терминов.
Вы не подскажете, в функции get_terms()
параметр meta_query
работает аналогично параметру meta_query
в WP_Query
? это массив массивов, но только работает вместо postmeta с termmeta, верно ?
Модератор
Юрій
(@yube)
Не подскажу. Не пользовался. Думаю, да. А что документация говорит?
@yube , еще раз спасибо, разобрался. Действительно, параметр meta_query в функции get_terms()
работает аналогично параметру meta_query в WP_Query
.
@yube , позвольте у Вас попросить ещё один совет: если есть 3 числовых поля, результат вычисления по которым нужно сравнить со значением из БД и вывести в фоновом режиме на экран, то как это лучше реализовать ? нужно как-то проверять три поля input на пустоту и если все поля заполнены выполнять AJAX-запрос ? и это нужно проверять всякий раз когда любое из полей теряет фокус ? но как быть, если после ввода всех трех значений пользователь нажимает кнопку «Сохранить» ? — результат сравнения ведь не успеет даже показаться на экране… или может быть есть другой вариант, до которого я не додумался… подскажите, пожалуйста
Модератор
Юрій
(@yube)
и это нужно проверять всякий раз когда любое из полей теряет фокус ?
Обычно вешают на on change и/или keyup.
как быть, если после ввода всех трех значений пользователь нажимает кнопку «Сохранить» ?
On change дизаблить кнопку submit и выставлять флаг, блокирующий submit, а по окончанию ajax возвращать всё взад.