Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
13 / 9 / 4
Регистрация: 30.03.2015
Сообщений: 28
1

XM\curl\Wordpress

13.04.2015, 22:41. Показов 622. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток

Прошу сильно не пинать ногами за нубские вопросы. Но упёрся лбом и никак не могу решить проблему.
И гуглил и форумы читал и пробовал по разному - всё равно косяки(

Суть проблемы. Пытаюсь написать постер в Wordpress по xmlrpc. Собственно говоря в инете примеров масса, но большинство или устаревшие и ругаются на не пойми что, или же имеют ту же проблему с кодировкой что и у меня.

У меня есть два варианта кода. Я пытаюсь настроить работу первым, но почему то при использовании кириллицы всё сыпется и в блог пишется какая то абракадабра. т.е. сам код рабочий, а вот почему сбивается кодировка я не могу понять.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//подключаем библиотеку
include_once 'IXR_Library.php';
 
 
function wpPostXMLRPC ($title, $body, $rpcurl, $username, $password, $category, $keywords='',$encoding='UTF-8'){
 
    $title = htmlentities($title,ENT_NOQUOTES,$encoding);
    $keywords = htmlentities($keywords,ENT_NOQUOTES,$encoding);
    $body = htmlentities($body,ENT_NOQUOTES,$encoding);
    $category = htmlentities($category,ENT_NOQUOTES,$encoding);
 
 
$content = array(
    'title'=>$title,
    'description'=>$body,
    'mt_allow_comments'=>0,  // 1 to allow comments
    'mt_allow_pings'=>0,  // 1 to allow trackbacks
    'post_type'=>'post',
    'mt_keywords'=>$keywords,
    'categories'=>array($category)
);
$params = array(0,$username,$password,$content,true);
$request = xmlrpc_encode_request('metaWeblog.newPost',$params);
 
    $ch = curl_init();
        curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
        curl_setopt($ch, CURLOPT_URL, $rpcurl);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 1);
        $results = curl_exec($ch);
    curl_close($ch);
    return $results;
 
}
 
wpPostXMLRPC('Проверка', 'Тут будет русское описание', 'http://site/xmlrpc.php', 'admin', '123456', 'категория');
Есть и второй вариант который нашёл на просторах интернета, в нём постится нормально, но сам код очень громоздкий, хочется понять что не так с первым способом. Он красивее что ли.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
include_once 'xmlrpc.inc.php';
 
//чтоб не было проблем с кодировкой
    $GLOBALS['xmlrpc_internalencoding'] = 'UTF-8';
    header('Content-type:text/html;charset=utf-8');
 
//логин и пароль
    $u_name = 'admin';
    $u_pass = '123456';
 
//обращаемся к test.wordpress.loc/xmlrpc.php
    $wp = new xmlrpc_client('/xmlrpc.php','site',80);
//кодировка клиента
    $wp->request_charset_encoding = 'UTF-8';
//чтоб возвращал в виде php-переменных
    $wp->return_type = 'phpvals';
 
    $struct = array();
//тип записи: page - страница, post - пост
    $struct['post_type'] = new xmlrpcval('post', 'string');
//наименование статьи
    $struct['title'] = new xmlrpcval('тут будет заголовок', 'string');
//сама статья отформатированная в html
    $struct['description'] = new xmlrpcval('В черном-черном городе, на черной-черной улице, не буду <strong>сам заправлять картриджи!</strong>', 'string');
//краткое описание, которое будет отображено на главной
    $struct['mt_excerpt'] = new xmlrpcval('Краткое описание статьи', 'string');
//массив с тегами
    $struct['mt_keywords'] = new xmlrpcval(array(
    new xmlrpcval('анекдот', 'string'),
    new xmlrpcval('юмор', 'string')), 'array');
//комментарии: 0 - запрещены, 1 - разрешены
    $struct['mt_allow_comments'] = new xmlrpcval(1, 'int');
//пинги: 0 - запрещены, 1 - разрешены
    $struct['mt_allow_pings'] = new xmlrpcval(1, 'int');
//вместо таймштампа можно передать
//объект класса DateTime
    $struct['dateCreated'] = new xmlrpcval(
    time(), 'dateTime.iso8601');
//статуст записи: publish - публичная, private - приватная
    $struct['post_status'] = new xmlrpcval('publish', 'string');
//массив с категориями: все категории должны существовать
    $struct['categories'] = new xmlrpcval(array(
    new xmlrpcval('Uncategorized','string')), 'array');
 
//собираем все в кучу
    $params = array( //ид блога
        new xmlrpcval(0, 'int'), //логин
        new xmlrpcval($u_name, 'string'), //пароль
        new xmlrpcval($u_pass, 'string'), //данные
        new xmlrpcval($struct, 'struct'),
//публикация: true - опубликована,
//false - не опубликована
    new xmlrpcval(true, 'boolean'));
 
//вызываем процедуру metaWeblog.newPost
    $r = $wp->send(new xmlrpcmsg('metaWeblog.newPost', $params));
//если ошибка, сообщаем об ошибке постинга
    if ($r->faultCode()) {
    die('Ошибка постинга:' . $r->faultString());
}
//WP вернет идентификатор поста в случае успеха
    $p = $r->value();
Прошу помочь, понять и простить )
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.04.2015, 22:41
Ответы с готовыми решениями:

Curl + Wordpress
Пытаюсь написать скрипт, который авторизируется на сайте WP и затем меняет там настройки и тд....

Авторизация curl (различие между curl и ajax запросами)
Есть ли различие в передаче данных в json формате через curl и ajax? Я хочу написать запрос,...

Curl команду превратить в php curl
команда: curl -s -F widget=$WIDGET -F secret=$SECRET -F amouser=$AMOUSER -F amohash=$AMOHASH -F...

Curl
Добрый день, работаю с api через curl $ku_twhitch = curl_init(); $query =...

0
13.04.2015, 22:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2015, 22:41
Помогаю со студенческими работами здесь

CURL
&lt;?php $url = &quot;http://extranet.gdbi.com/login.aspx&quot;; $ch = curl_init(); curl_setopt($ch,...

Curl авторизация
Всем привет. Необходимо авторизоваться на сайте с помощью Curl. $curl = curl_init(); ...

cURL и редирект
Доброго времени суток! хочу получить страницу по следующему адресу:...

Curl авторизация
Здравствуйте подскажите как через курл сделать авторизацию на сайте? Отправляем на сайт для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru