Появилась нужда добавлять посты в вордпресс из сторонних скриптов. Недолго думая, изобрел велосипед в стиле 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 комментариев
Пригадиццо када линя выучу. Спасибо Саша!
Сплоги делаешь?
Можно еще воспользоваться этим: http://www.charnad.com/wp-poster/
Про то что можно логировать мускль знал, но не знал что делается одной строчкой.
Ad1ce, я много чем занимаюсь 😉 Вп-постер я знал, там через xm-rpc, это снижает скорость сильно. У меня свои скрипты для этого дела )
Подскажи каким вдс пользуешься.
hostd.ru
тарифы
скидка
рефка
+ еще могу скидку устроить, стукнись в асю
Как -то чрезвычайно дорого. Даже у firstvds дешевле. Я бы хотел 1000 МГ, 10 айпи, заплатить готов 1000 р, но похоже это только мечты.
Хотя вот интересное решение http://vpsland.com/linuxplans.html
Буду думать. Возможно возьму хостинг на некоторые сайты, а другие оставить на моем серваке.
в районе 40$ — 50$ будет стоить самый дорогой тариф если через меня там взять. У фествпс беру периодически серваки под нужды некоторых скриптом, там фря стоит, но как-то я недоверяю сервакам по цене дешевле хостинга.
Спасибо за подсказку с set_prefix!
Хм, а в какой кодировке данные кормить? Сразу в utf8 или он перекодирует автоматом? Хотя для автомата ему надо исходную кодировку говорить…
Киноман, вп только с утф работает