У меня есть магазин Woocommerce с сотнями товаров с уникальными изображениями. Некоторые из этих элементов могут повторно использовать одно и то же «общее» изображение, и у меня уже есть сценарий для надежного вызова общих изображений. Однако я не знаю, как включить общее изображение в галерею страниц продукта, не изменяя запись таблицы postmeta. Вызывая функцию update_post_meta, я могу вставить идентификатор изображения, и оно появится в галерее. Но делать это таким образом — не очень хороший подход, потому что, если мне когда-нибудь придется изменить общий образ в будущем, это станет занозой в заднице. Я бы предпочел, чтобы сценарий был динамическим и загружал только общие изображения, поскольку страница продукта генерирует PHP. Другими словами, я не хочу, чтобы какие-либо записи таблицы обновлялись в таблицах WP только для отображения общих изображений. Есть ли способ сделать это? Я убежден, что есть способ сделать это, изменив файлы моей темы, однако я хотел знать, есть ли уже встроенное действие/фильтр Wordpress, который позволяет динамически вставлять изображения без изменения файлов темы.
Этот фильтр должен работать
add_filter('woocommerce_product_get_gallery_image_ids', 'add_dynamic_gallery_images', 10, 2);
function add_dynamic_gallery_images($ids, $product){
$ids[] = 100; //image ID to add
return $ids;
}
Я также попробовал «get_gallery_image_ids», у которого есть некоторая документация, но он также ничего не сделал.
Просмотрел допустимые хуки в этом списке, и ни один из них, похоже, не нацелен конкретно на этот случай. Может я не там ищу: woocommerce.github.io/code-reference/hooks/hooks.html
В get_prop
есть фильтр woocommerce/includes/abstracts/abstract-wc-data.php#L821
, просто нужно понять, как им правильно пользоваться
Я обновил его и протестировал, теперь он работает.
эй. я прочитал о get_prop и о том, как он работает, а потом разобрался. сегодня ты научил меня двум новым вещам. Спасибо
Это отличная идея, и я верю, что она отлично сработает, если я смогу подобрать правильный фильтр. но пока я его тестирую, похоже, он ничего не делает. Я пытаюсь найти информацию о woocommerce_get_product_gallery_image_ids и ничего не могу найти.