WooCommerce: проверьте, есть ли у продукта особый атрибут c. - PullRequest
2 голосов
/ 16 июня 2020

Я хочу проверить, есть ли у продукта особый атрибут c. Но возможно, что атрибут есть только в одном из многих.

Например, у товара есть атрибут язык pa_sprog и более одного языка. Но я хочу проверить, есть ли в нем язык «engli sh».

Я нашел этот отличный код ({ ссылка }):

<code>// for debug purposes, place in comment tags or delete this code
    $product_attributes = $product->get_attributes();
    echo '<pre>', print_r($product_attributes, 1), '
'; // Получить значение атрибута товара $ sprog = $ product-> get_attribute ('pa_sprog'); // если у товара есть значение атрибута 'sprog' if ($ sprog == "engli sh") {echo ' да! '; } else {echo ' нет! '; }

Но код работает, только если язык «engli sh» является единственным значением для этого атрибута. Если их несколько, код больше не работает.

Я попытался изменить оператор if, чтобы проверить, есть ли язык в массиве атрибутов:

if( in_array( "english", $sprog) ) {

Но не работает.

Есть другой способ?

1 Ответ

2 голосов
/ 16 июня 2020

Это не array, а string, поэтому вы можете использовать strpos

global $product;

// for debug purposes, place in comment tags or delete this code
$product_attributes = $product->get_attributes();
echo '', print_r($product_attributes, 1), '
'; // Получить значение атрибута товара $ sprog = $ product-> get_attribute ('pa_sprog'); // Gettype - возвращает тип переменной PHP var. echo gettype ($ sprog). '
'; // Результат echo $ sprog. '
'; // Если у товара есть значение атрибута 'sprog' if (strpos ($ sprog, 'engli sh')! == false) {echo ' да! '; } else {echo ' нет! '; }

Связано: WooCommerce: проверьте, есть ли у товара атрибут

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