Получение результата функции во время do_action()
Немного не понимаю что не так. Пишу свой плагин, мне надо получить все записи типа продукты (Вукомерс), чтобы сравнить их с выдачей с апи и потом делать действия или не делать.. Я в плагине делаю так
$app = new App(); add_action('init', [$app, 'getProductsData']);
сам класс лежит в другом файле. уже подключен. Вот код метода
public static function getProductsData(){ $obj = new WP_Query([ 'post_type' => 'product', 'posts_per_page' => -1 ]); $products = []; if(!empty($obj->posts)){ foreach ($obj->posts as $postObj){ $src = get_the_post_thumbnail_url($postObj->ID, 'full'); $metaData = get_post_meta($postObj->ID); $sku = $metaData['_sku'][0]; $products[$sku] = [ 'sku' => $metaData['_sku'][0], 'name' => $postObj->post_title, 'desc' => $postObj->post_content, 'price' => $metaData['_price'][0], 'src' => $src, 'in_stock' => $metaData['_stock'][0], 'id' => $postObj->ID ]; } } return $products; }
Если внутри него завардампить $products - данные есть. Но как мне их наружу получить? Пробовал передавать этот код анонимной функцией, а перед add_action('init', my anonimaze function code here) делать вот так: global $products; $products = [];
передаввать ее в callback при помощи use, а внутри уже заполнять, но когда я делаю var_dump($products); сразу после add_action('init', my anonimaze function code here) то получаю пустой массив. Как мне получить эти данные?
Во-первых, вызываешь статический метод нестатически, получишь ошибку в будущих версиях PHP.
Во-вторых, если юзаешь global. То не нужны никакие колбеки и use. Просто внутри функции объяви что переменная глобальная:
Где-то в другом файле...
Это прочитай: https://wp-kama.ru/id_7641/globalnye-peremennye-v-wordpress.html
Но вообще, лучше не юзать глобальные переменные, заверни лучше в свой класс её как статическое свойство, чтобы не торчала она по всему PHP скрипту.