Получение результата функции во время 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. Просто внутри функции объяви что переменная глобальная:
global $foo; $foo = []; add_action( 'action', 'my_func' ); function my_func(){ global $foo; $foo[] = 'value'; }Где-то в другом файле...
Это прочитай: https://wp-kama.ru/id_7641/globalnye-peremennye-v-wordpress.html
Но вообще, лучше не юзать глобальные переменные, заверни лучше в свой класс её как статическое свойство, чтобы не торчала она по всему PHP скрипту.