Получение URL изображений товара (WooCommerce)

21 мая 2019 г., 17:48:37
Просмотры: 41K
Голосов: 10

Что происходит, когда пост (товар) не имеет guid, потому что использует то же изображение, что и другой товар?

Например:

Запрос 1:

select guid from wp_posts where post_type='attachment' and post_parent=num 

Не возвращает ничего.

Запрос 2:

select guid from wp_posts where ID=num

Возвращает URL товара.

В этом случае, как мне найти URL изображения этого товара?

0
Все ответы на вопрос 3
2
16

Во-первых, GUID — это не URL. Это "глобально уникальный идентификатор". WordPress использует URL для этой цели, но обращение к нему не является надежным способом получения URL для чего-либо (это была плохая идея, но она сохранена для обратной совместимости).

Невозможно напрямую запросить URL изображения из базы данных. Полный URL там не хранится. Но если у вас есть ID товара и вы хотите получить URL его изображения, вы можете сделать следующее:

$product   = wc_get_product( $product_id );
$image_id  = $product->get_image_id();
$image_url = wp_get_attachment_image_url( $image_id, 'full' );
21 мая 2019 г. 18:23:11
Комментарии

Спасибо, но если я хочу найти это в базе данных, в какой таблице я могу это найти?

user8761967 user8761967
23 мая 2019 г. 10:29:16

Как я уже говорил, полный URL не хранится в базе данных. Он генерируется программно на основе нескольких факторов, таких как URL сайта, структура постоянных ссылок, аргументы перезаписи типа записи, структура директории загрузок и настройки wp-config. Вам нужно получить его с помощью функции, подобной той, что в моем ответе.

Jacob Peattie Jacob Peattie
23 мая 2019 г. 10:36:11
0

Я видел где-то запрос для получения изображений товаров из базы данных.
Возможно, это вам поможет.
Просто установите необходимые параметры согласно вашим требованиям.

SELECT p.ID,am.meta_value FROM wp_posts p LEFT JOIN wp_postmeta pm ON pm.post_id = p.ID AND pm.meta_key = '_thumbnail_id' LEFT JOIN wp_postmeta am ON am.post_id = pm.meta_value AND am.meta_key = '_wp_attached_file' WHERE p.post_type = 'product' AND p.post_status = 'publish';
31 дек. 2019 г. 09:31:10
0

Для справки просто выполните этот запрос в базе данных:

 SELECT * FROM  `wp_postmeta` WHERE meta_key IN ('_wp_attached_file', '_wp_attachment_backup_sizes',  '_wp_attachment_metadata',  '_thumbnail_id')

Если же выполнить вышеуказанный запрос только с "_wp_attached_file", вы получите путь из директории загрузок.

Надеюсь, это поможет..

17 окт. 2019 г. 00:13:48