WordPress, автопост, установка post_date от даты данных - PullRequest
1 голос
/ 01 июня 2011

У меня есть 2000 фрагментов данных, которые я хочу импортировать в мой WordPress, так как wp имеет много функций, которые прекрасно работают. Я начал делать это вручную, но потом понял, что проще написать скрипт для его импорта.

все работает отлично !! одна проблема, я не могу заставить его использовать RELEASEDATE моих данных в качестве даты POSTED.

Я потратил 2 дня на поиски в Интернете и использование SO для ресурсов, и все подошли близко, но некоторые ответы используют внутреннюю структуру кодирования wp, чего я не хочу делать. Вот что у меня есть:

$title = htmlentities($title,ENT_NOQUOTES,$encoding); 
            $keywords = htmlentities($keywords,ENT_NOQUOTES,$encoding); 
            $content = array( 
                'title'=>$title, 
                'description'=>$body, 
                'mt_allow_comments'=>1,  // 1 to allow comments 
                'mt_allow_pings'=>0,  // 1 to allow trackbacks 
                'post_type'=>'post',
                'post_status' => 'draft',
                'publish' =>$pubdate,
                'mt_keywords'=>$keywords, 
                'categories'=>array($category) 
            ); 
            $params = array(0,$username,$password,$content,true); 
            $request = xmlrpc_encode_request('metaWeblog.newPost',$params); 
            $ch = curl_init(); 

Это все работает отлично, но я не могу заставить дату работать. RELEASEDATE отформатирован в точности как WP, 2011-03-04 14:33:21 и т. Д.

Она печатает дату в сообщении, но "отправлено" говорит о дне, когда я запустил скрипт. В приведенном выше примере я отправляю RELEASEDATE в $ pubdate. Я знаю, что post_date является объектом, но не знаю, как это реализовать.

Короче говоря, если я позволю этому сценарию исполниться, у меня будет 2000 постов сегодня !! : P

Ответы [ 2 ]

1 голос
/ 23 апреля 2012

Я делаю это так:

  1. Используйте библиотеку XML-RPC Incutio для PHP
  2. Код должен выглядеть следующим образом:

    $client = new IXR_Client('http://wp-blog.com/xmlrpc.php');
    
    $post = array(
        'post_type'=> 'post',
        'title' => $title,
        'description' => $description,
        'date_created_gmt' => new IXR_Date(time()),
    );
    
    if (!$client->query('metaWeblog.newPost', '', $login, $password, $post, true))
    {
        die( 'Error while creating a new post' . $client->getErrorCode() ." : ". $client->getErrorMessage());
    }
    
    $post_id = $client->getResponse();
    

Для меня это работает как шарм: -)

Более подробное описание ISO8601 и формата даты XML можно найти здесь: Как составить план публикации с использованием XMLRPC / metaWeblog.newPost ??

1 голос
/ 01 июня 2011

Эта страница список параметров, принятых metaWeblog.newPost .

На этой странице вы можете использовать ' date_created_gmt ' или ' dateCreated ' для хранения данных даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...