Где хранятся ключ и значение атрибута продукта WooCommerce - PullRequest
0 голосов
/ 23 апреля 2019

Я добавил ключ и значение атрибута продукта.

Я хочу запросить товары по этому атрибуту. У меня есть запрос для этого (здесь не актуально), но он ничего не возвращает. Поэтому я открыл PHPMyAdmin и начал искать в своей локальной базе данных, чтобы начать с самого начала.

Я нигде не могу найти свой новый атрибут.

Итак: my-attribute = "Test Value" устанавливается через админ моей локальной версии сайта. Проверено соединение с БД, указывает на локальный экземпляр MySQL. Сохраненные атрибуты, нажали кнопку обновления продукта, оставили страницу продукта и вернулись, чтобы убедиться, что атрибут действительно находится в продукте и сохранен.

Ничего в базе данных.

Поиск my-attribute или pa_my-attribute в столбце wp_term_taxonomy таблицы taxonomy дает ноль результатов. Я вижу здесь другие записи с pa_ + некоторым другим именем настраиваемого атрибута.

При нажатии на другие таблицы, такие как wp_terms или wp_woocommerce_attribute_taxonomies, также не отображаются записи, соответствующие вводу my-attribute или qa_my-attribute.

Добавлен тот же точный атрибут ко второму продукту и все еще не может ничего найти. Подтверждено соединение с БД. Нет записей в базе данных, которые я могу найти.

Но это обязательно есть в продуктах в админке.

Чего мне не хватает?

1 Ответ

0 голосов
/ 23 апреля 2019

Оказывается, они хранятся в сериализованном поле.

$attribute_name  = 'my-attribute';
$attribute_value = 'cupcakes';

$serialized_value = serialize( 'name' ) . serialize( $attribute_name ) . serialize( 'value' ) . serialize( $attribute_value ); 
$args = array(
    'post_type'      => 'product',
    'post_status'    => 'any',
    'posts_per_page' => -1,
    'orderby'        => 'title',
    'order'          => 'ASC',
    'meta_query' => array(
        array(
            'key'     => '_product_attributes',
            'value'   => $serialized_value,
            'compare' => 'LIKE',
        ),
    ),
);

$query = new WP_Query( $args );
$products = $query->get_posts();
//neat little array of product objects (not the full product object, 
//just data that came from query. Can use wordpress loop on $query or
//wc_get_product(--pass product ID here--)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...