Написание плагина wordpress и попытка включить PHP PHP SDK

Я пишу плагин для WordPress, который требовал PHP PHP SDK. Я столкнулся с тем, что, по моему мнению, является общей проблемой, исходя из числа результатов, которые я нашел, начиная с года назад. К сожалению, я не смог найти решение.

Я использую WordPress 3.8 и PHP PHP SDK Master, взятый из github, поэтому это должна быть последняя версия. Я фактически запускаю этот же код вне WordPress, и он успешно запускался без ошибок.

Итак, я загружаю свой плагин и активирую его. Я перехожу к панели, которую я построил, которая запрашивает ключ appID и Secret, а также имя пользователя для учетной записи facebook. Весь плагин будет делать, это захватить имя пользователя меня.

Поэтому, когда я пытаюсь запустить основную функцию, загружающую фид, я получаю следующие ошибки:

Предупреждение: session_start () [function.session-start]: не удается отправить cookie сеанса – уже отправленные заголовки (вывод запущен в {path} /wp-admin/includes/template.php:1698) в {path} / wp-content /plugins/{mypluginname}/facebook-php-sdk/src/facebook.php в строке 48

Предупреждение: session_start () [function.session-start]: Не удается отправить ограничитель кеша сеанса – уже отправленные заголовки (вывод запущен в {path} /wp-admin/includes/template.php:1698) в {path} / wp-content /plugins/{mypluginname}/facebook-php-sdk/src/facebook.php в строке 48

Что я пробовал

Итак, я прочитал несколько разных сообщений, которые должны использовать функции ob_start () и ob_end_flush () php, и это устранит проблему. Поскольку я понимаю проблему, которую я имею, я отправляю вещи в заголовок, где я должен, потому что заголовок уже отправлен.

Я попытался ob_start / ob_end_flush в верхней и нижней части моего плагина, и это не изменилось.

Я попытался загрузить плагин WordPress Word и использовать модифицированный PHP PHP SDK, который использует этот плагин, и который избавился от этих ошибок, но создал новую ошибку.

Неустранимая ошибка: доступ к необъявленному статическому свойству: WP_BaseFacebook :: $ CURL_OPTS в {path} / wp-content / plugins / {pluginname} /facebook-php-sdk/src/base_facebook.php в строке 932

Итак, я прочитал, что это потому, что CURL не включен. Я проверил страницу PHP INFO, и CURL включен. Я использую curl-запросы в другом плагине. Я вижу некоторые вещи под функциями CURL, которые не включены. Кто-нибудь знает, какой вариант мне нужно включить, чтобы эта модифицированная версия PHP PHP SDK работала с моим плагином?

Кто-нибудь знает, как исправить ошибки, которые я получаю от стандартного PHP PHP SDK, или кто-нибудь знает, как исправить ошибки, которые я получаю от измененного PHP PHP SDK?

Заранее спасибо. Я надеюсь получить решение для обоих работающих, а затем, наконец, поставить эту проблему на отдых. С этой же проблемой мы столкнулись с 2011 года.

Чтобы предоставить более подробную информацию, вот часть кода, который у меня есть в моем плагине.

require_once('facebook-php-sdk/src/facebook.php'); global $facebook; // read that i needed to add this line to my script; it didnt help. // Create our Application instance (replace this with your appId and secret). $fb_config = array( 'appId' => $ijFaceFeedAppID, 'secret' => $ijFaceFeedSecretKey, 'fileUpload' => false, 'allowSignedRequest' => false ); // get feed $facebook = new WP_Facebook($fb_config); // am using the modified facebook sdk $page_feed = $facebook->api( '/'.$ijFaceFeedUser.'/feed', 'GET' ); 

Прежде всего загрузите zip facebook php sdk из Facebook PHP SDK from Github.com

Извлеките папку zip, вам понадобится только папка «src» для интеграции вашего приложения facebook в ваш плагин.

скопируйте папку 'src' и вставьте ее в свой каталог плагинов.

В своем файле установки плагина сначала запустите сеанс, выписав session_start() а затем включите файл facebook.php из папки src. Как это:

session_start (); включают в себя ( 'SRC / facebook.php');

Теперь следуйте приведенному ниже коду.

 session_start ();
 включают в себя ( 'SRC / facebook.php');

 $ config = array ('appId' => 'Ваш APP ID', 'secret' => 'Your App Secret');

 $ connect = new Facebook ($ config);

 $ user = $ connect-> getUser ();
 $ me = null;

 если ($ пользователю)
 {
     пытаться
     {
          $ me = $ connect-> api ('/ me');
     }
     catch (FacebookApiException $ e)
     {
         echo $ e-> getMessage ();
     }
 }

 если ($ я)
 {
     $ logoutUrl = $ connect-> getLogoutUrl ();
     эхо «Выход»;
 }
 еще
 {
     // поскольку версия facebook php sdk равна 3, поэтому есть некоторые изменения для разрешений
     // Если вы хотите добавить разрешение для read_streams, чтобы передать массив с адресом входа
     $ params = array ('scope' => 'read_stream');
     $ loginUrl = $ connect-> getLoginUrl ($ params);
     echo "Login";
 }

Теперь вы можете входить в систему с помощью facebook и запрашивать разрешение для потока чтения только в первый раз.

Специальное спасибо @Azhar Munshi очень я столкнулся с той же проблемой, но теперь, после того как я попытался поставить session_start(); before include('src/facebook.php'); ошибки исчезают 🙂