Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Всем привет! Работаю на проектом и мне надо спарсить посты с блогов с Wordpress сайтов, несколько блогов, штук 5-7, и объединить их, не суть.
Я пробовал получать данные при помощи клиента Guzzle - все ок.
Но у Ларавел есть плагин https://github.com/threesquared/laravel-wp-api вот с ним у меня проблемка, видимо с доступом логин пароль к апи блогов Wordpress.
Вот пример при помощи Guzzle:
$client = new Client;
$res = $client->request('GET', 'https://blog.com/wp-json/wp/v2/posts', [
'auth' => ['login', 'password']
]);
$body = $res->getBody();
$str = json_decode($body);
Все ок!
Делаю на WpApi
$client = new Client;
$endpoint = 'https://blog.com/wp-json/wp/v2/';
$auth = array (
'auth' => ["login" . ":" . "password" ],
);
$page = new WpApi($endpoint, $client, $auth);
Получаю ошибку:
ErrorException in Client.php line 337:
Undefined offset: 0
switch (strtolower($type)) {
case 'basic':
$modify['set_headers']['Authorization'] = 'Basic '
. base64_encode("$value[0]:$value[1]");
break;
case 'digest':
// @todo: Do not rely on curl
Еще в папке config есть файл wp-api.php
return array(
'endpoint' => 'http://<WP_LOCATION>/wp-json/',
);
я изменял значение на адрес блога 'endpoint' => 'https://blog.com/wp-json/wp/v2/'; - не помогло.
Это класс.
class WpApi
{
/**
* Guzzle client
* @var Client
*/
protected $client;
/**
* WP-WPI endpoint URL
* @var string
*/
protected $endpoint;
/**
* Auth headers
* @var string
*/
protected $auth;
/**
* Constructor
*
* @param string $endpoint
* @param Client $client
* @param string $auth
*/
public function __construct($endpoint, Client $client, $auth = null)
{
$this->endpoint = $endpoint;
$this->client = $client;
$this->auth = $auth;
Не в сети
оказалось все просто! я неверно передавал логин и пароль клиенту Guzzle.
$client = new Client();
$auth = ['login', 'password'];
$endpoint = $blog_url;
$wp = new WpApiExt($endpoint, $client, $auth);
$data = $wp->posts();
Не в сети