В Woocommerce, как найти все продукты, для которых определенный продукт является перекрестной продажей? - PullRequest
0 голосов
/ 01 июня 2019

В Woocommerce я хотел бы получить список продуктов, для которых определенный продукт определен как перекрестная продажа для них.

Таким образом, проверка того, какие продукты B являются перекрестной продажей, даст: A, C

Не нашел фона для этого

Пример: продукт A имеет продукты B, C как перекрестные продажи Продукт B имеет продукты A, C, D как перекрестные продажи Продукт C имеет продукты A, B, D как перекрестные продажи

Таким образом, проверка того, какие продукты B являются перекрестными продажами, дала бы: A, C

1 Ответ

0 голосов
/ 01 июня 2019

Вы можете сделать это с помощью запроса MySQL.

Поскольку WooCommerce хранит идентификаторы перекрестных продаж в виде сериализованных данных, кажется, что правильным способом является чтение всех продуктов через некоторый цикл WP и unserialize-> анализировать все идентификаторы перекрестных продаж, а затем поиск необходимого идентификатора - но это займет слишком много времени и памяти.

Вот почему нам нужно найти более простой способ - какой-то трюк. Вот оно:

Предположим, что идентификатор продукта A равен 132, продукта B равен 60, продукта C равен 34.

А продукт А имеет 2 перекрестных продукта - В и С.

Таким образом, таблица wp_postmeta будет иметь такую ​​строку:

1098    132 _crosssell_ids  a:2:{i:0;i:60;i:1;i:34;}

Продукт B присутствует в метаданных crossell_ids других продуктов в виде «i: 60;» уникальная строка. Вот почему нам просто нужно найти эту строку через wp_postmeta.

global $wpdb;
$product_b_id=60;

$product_that_have_B_as_crossell= $wpdb->get_col("select post_id 
from $wpdb->postmeta 
where 
meta_key='_crosssell_ids' 
and
meta_value like  '%i:".esc_sql($product_b_id).";%' ");

var_dump($product_that_have_B_as_crossell);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...