Или зачем изобретать велосипед, если есть самолет.

Появилась нужда добавлять посты в вордпресс из сторонних скриптов. Недолго думая, изобрел велосипед в стиле INSERT INTO….
Все хорошо, но только при такой подходе куча полезных штук типа тегов, автокросспостинга статей не работает.
Фигня думаю, щас посморим какие вп запросы генерит, создадим такие же и все будет ок. Врубаю полное логирование мускула (на этом вдс ~200 площадок), делаю пару пробных постов. За пару минут пока постил лог стал весить пару метров )) что естесственно меня не остановило, отгрепал по нужным словам, стал формировать запросы. В итоге получился такой огромный костыль, что даже смотреть страшно.
А все делается проще и изящней:

#!/usr/bin/php
require_once("_WP_PATH_/wp-config.php");
// Create post object
 $my_post = array();
 $my_post['post_title'] = "My post2";
 $my_post['post_content'] = "This is my post.";
 $my_post['post_status'] = "publish";
 $my_post['post_author'] = "1";
 $my_post['tags_input'] = "tag555, tag444, tag777";
// Insert the post into the database
 wp_insert_post( $my_post );
?>

Дополнительные параметры для данной функции:

$post = array(
  'comment_status' => [ 'closed' | 'open' ] // 'closed' means no comments.
  'ID' => [ <post id> ] //Are you updating an existing post?
  'menu_order' => [ <order> ] //sets the order should it appear in the tabs.
  'page_template => [ <template file> ] //Sets the template for the page.
  'ping_status' => [ ? ] //Ping status?
  'pinged' => [ ? ] //?
  'post_author' => [ <user ID> ] //The user ID number of the author.
  'post_category => [ array(<category id>, <...>) ] //Add some categories.
  'post_content' => [ <the text of the post> ] //The full text of the post.
  'post_date' => [ Y-m-d H:i:s ] //The time post was made.
  'post_date_gmt' => [ Y-m-d H:i:s ] //The time post was made, in GMT.
  'post_excerpt' => [ <an excerpt> ] //For all your post excerpt needs.
  'post_parent' => [ <post ID> ] //Sets the parent of the new post.
  'post_password' => [ ? ] //password for post?
  'post_status' => [ 'draft' | 'publish' | 'pending' ] //Set the status of the new post.
  'post_title' => [ <the title> ] //The title of your post.
  'post_type' => [ 'post' | 'page' ] //Sometimes you want to post a page.
  'tags_input' => [ '<tag>, <tag>, <...>' ] //For tags.
  'to_ping' => [ ? ] //?
);

Ссылки на маны, которые следует читать до того, как что-либо делаешь:
wp_insert_post function reference
записи с меткой этой функции
пример использования

P.S. если скрипт, который подключает эту функцию, выкидывает PHP Fatal error:  Call to a member function set_prefix() on a non-object in /home///// то надо выносить

require_once("_WP_PATH_/wp-config.php");

в самый верх. Если настроен кросспостинг, то постите с задержкой

Еще несколько ссылочек.

10 responses


Do you want to comment?

Comments RSS and TrackBack Identifier URI ?

Пригадиццо када линя выучу. Спасибо Саша!

Апрель 22, 2009 8:36 пп

Сплоги делаешь?
Можно еще воспользоваться этим: http://www.charnad.com/wp-poster/
Про то что можно логировать мускль  знал, но не знал что делается одной строчкой.

Апрель 23, 2009 1:17 дп

Ad1ce, я много чем занимаюсь ;) Вп-постер я знал, там через xm-rpc, это снижает скорость сильно. У меня свои скрипты для этого дела )

Апрель 23, 2009 11:14 дп

Подскажи каким вдс пользуешься.

Май 4, 2009 2:05 пп

hostd.ru
тарифы
скидка
рефка
+ еще могу скидку устроить, стукнись в асю

Май 4, 2009 3:14 пп

Как -то чрезвычайно дорого. Даже у firstvds дешевле. Я бы хотел 1000 МГ, 10 айпи, заплатить готов 1000 р, но похоже это только мечты.
Хотя вот интересное решение http://vpsland.com/linuxplans.html
Буду думать. Возможно возьму хостинг на некоторые сайты, а другие оставить на моем серваке.

Май 4, 2009 11:28 пп

в районе 40$ — 50$ будет стоить самый дорогой тариф если через меня там взять. У фествпс беру периодически серваки под нужды некоторых скриптом, там фря стоит, но как-то я недоверяю сервакам по цене дешевле хостинга.

Май 5, 2009 11:54 дп

Спасибо за подсказку с set_prefix!

Май 27, 2009 11:04 пп

Хм, а в какой кодировке данные кормить? Сразу в utf8 или он перекодирует автоматом? Хотя для автомата ему надо исходную кодировку говорить…

Ноябрь 27, 2009 10:17 пп

Киноман, вп только с утф работает

Декабрь 8, 2009 11:39 пп

Comment now!
















Trackbacks

1