Title: PHP Return Array from API &#8212; Plugin
Last modified: 26.03.2022

---

# PHP Return Array from API — Plugin

 *  Решено [Marten](https://ru.wordpress.org/support/users/marten1/)
 * (@marten1)
 * [4 года назад](https://ru.wordpress.org/support/topic/php-return-array-from-api-plugin/)
 * Добрый день, имею два вопроса, всем спасибо за ответы.
 * 1. Вывожу Json API через cURL — это все в функции которая имеет шорткод. Весь
   код в файле php закинутом в папку плагинов — ну по факту персональный короткий
   плагин. Когда ставлю свой шорткод на страницу вп и сохраняю все работает. Но 
   проблема в том что если я его не деактивирую и хочу отредачить содержимое этой
   страницы — то ловлю критическую ошибку а до этого текста содержимое своего плагина(
   ибо выведен через echo), не оч понимаю как решить, чтоб в панели редактирования
   оно не забирало этот код.
 * 2. У меня есть подобный код PHP. Мне нужно вернуть его через что-то типо [Return]
   потому что [Echo] выводит код перед html кодом вне зависимо где вы ставите шорткод—
   но это логично. Но я не понимаю как мне это сделать, если я получаю большой асинхронный
   массив из API и скажем задать значение для каждой переменной не совсем реально,
   тем более я его перебираю через foreach и добавляю условия вывода этого перебора(
   тоесть часть не нужной инфы у меня не выводит). Я понимаю что можно седлать Return
   array (), но я не понимаю что мне писать в array, если я не могу задать значения
   для переменных. Есть вариант [List] но тут я особо не могу понять логику его 
   работы.
 *     ```
       <?php
   
       ...
   
       $data2 = json_decode($response2, true, 999, JSON_THROW_ON_ERROR);
   
       $a = 1;$b = 1;
       foreach ($data2 as $reposit2): if($reposit2['import_export_and_transit_procedures'] ?? $reposit2['enquiry_points'] ?? $reposit2['single_window']):
       echo '<div class="collage-thumb"><a href="#" class="js-open-modal image-link" data-modal="'.$a++.'"><img src="/wp-content/uploads/agora/img/flag/flag'.$reposit2['id'].'.jpg" alt="img" /><div class="thumb-info">'.$reposit2['name'].'</div></a></div>'; 
       else:
           echo "";
       endif;
       endforeach;
   
       ...
       ```
   
 * Эт просто бред
 *     ```
       <?php
       $content '<div class="collage-thumb"><a href="#" class="js-open-modal image-link" data-modal="'.$a++.'"><img src="/wp-content/uploads/agora/img/flag/flag'.$reposit2['id'].'.jpg" alt="img" /><div class="thumb-info">'.$reposit2['name'].'</div></a></div>';
       return array($content,) 
   
       or
   
       list($content)
       ```
   
 * Всем еще раз Спасибо!

Просмотр 2 ответов — с 1 по 2 (всего 2)

 *  Модератор [Sergey Biryukov](https://ru.wordpress.org/support/users/sergeybiryukov/)
 * (@sergeybiryukov)
 * Live and Learn
 * [4 года назад](https://ru.wordpress.org/support/topic/php-return-array-from-api-plugin/#post-12220482)
 * > если я его не деактивирую и хочу отредачить содержимое этой страницы — то ловлю
   > критическую ошибку
 * Какую именно? Предполагаю, что нужно переделать код, чтобы возвращал результат,
   а не выводил на экран.
 * > Мне нужно вернуть его через что-то типо [Return] потому что [Echo] выводит 
   > код
 * Попробуйте так:
 *     ```
       $output = '';
   
       foreach ( ... ) :
       	if ( ... ) :
       		$output .= '<div class="collage-thumb">...</div>';
       	endif;
       endforeach;
   
       return $output;
       ```
   
 * или так:
 *     ```
       ob_start();
   
       foreach ( ... ) :
       	if ( ... ) :
       		echo '<div class="collage-thumb">...</div>';
       	endif;
       endforeach;
   
       return ob_get_clean();
       ```
   
 *  Автор [Marten](https://ru.wordpress.org/support/users/marten1/)
 * (@marten1)
 * [4 года назад](https://ru.wordpress.org/support/topic/php-return-array-from-api-plugin/#post-12220485)
 * > Какую именно? Предполагаю, что нужно переделать код, чтобы возвращал результат,
   > а не выводил на экран.
 * Это скорее баг или конфликт wp и php. Потому что сейчас, когда я сделал обвертку
   в div оно больше не выбивает ее. А до этого когда была обвертка просто в <p>,
   когда я нажимал на редактирование страницы оно писало критическую ошибку в рамке,
   а до этого текста оно выводило все содержимое которое я выводил в той же рамке
   ошибки. Но почему я говорю о баге или о конфликте. Потому что при p на самой 
   странице не было полосы прокрутки то есть где то задевался скорее всего width
   страницы и возможно из-за этого wp не мог адекватно зарендерить его в редаторе
   и я думаю поэтому он и говорил о критической ошибке.
 * > Попробуйте так:
 * Большое спасибо! Это работает!
 * На самом деле я пробовал писать первую версию того кода, что вы мне привели, 
   но ловил ошибку. Мой косяк был в том что я в своем коде не писал пустую переменную`
   $output = '';` а сразу ставил равенство и возврат. А как увидел ваш код, сразу
   в голове — Семен, семенович . А куда ж оно это будет записывать если у него нет
   пустой переменной
    -  Ответ изменён 4 года назад пользователем [Marten](https://ru.wordpress.org/support/users/marten1/).

Просмотр 2 ответов — с 1 по 2 (всего 2)

Тема «PHP Return Array from API — Plugin» закрыта для новых ответов.

## Метки

 * [php](https://ru.wordpress.org/support/topic-tag/php/)
 * [plugin](https://ru.wordpress.org/support/topic-tag/plugin/)

 * Форум: [Проблемы и решения](https://ru.wordpress.org/support/forum/how-to-and-troubleshooting/)
 * 2 ответа
 * 2 участника
 * Последний ответ: [Marten](https://ru.wordpress.org/support/users/marten1/)
 * Последняя активность: [4 года назад](https://ru.wordpress.org/support/topic/php-return-array-from-api-plugin/#post-12220485)
 * Статус: решённая

## Темы

### Самые популярные темы

### Темы без ответов

### Без вопроса

### Решённые

### Нерешённые

### Все темы
