- Автор темы
- #1
Версия Wordpress 3.0.0 и выше.
Что нужно: нужно сделать постинг в wp через xml-rpc на php с учётом таксономий и постинга картинки в поле(featured image). Пример поля на скриншоте. Часто темы вордпресса используют это поле чтобы выводить картинки для главной страницы у постов.
Для постинга на php использую библиотеку IXR_Library.php
Пример кода:
На стороне wp в файле function 1. Создаю таксономию
2. Видоизменяю функцию для xml сервера с учётом таксономий
На текущий момент отлично всё постит с таксономиями . Скажите мне пожалуйста, как мне передать картинку в секцию ''set featured image? Что поменять на стороне клиента и сервера. Может код у кого готовый есть, наверняка кто нить пытался передать.
Что нужно: нужно сделать постинг в wp через xml-rpc на php с учётом таксономий и постинга картинки в поле(featured image). Пример поля на скриншоте. Часто темы вордпресса используют это поле чтобы выводить картинки для главной страницы у постов.
Для постинга на php использую библиотеку IXR_Library.php
Пример кода:
PHP:
function wp_post2($staring,$pageTags,$blogUrl, $username, $password, $pageId,$pageTitle,$description, $charset = 'windows-1251',$pageCategory = '',$pageDate_create=''){
require_once ('./IXR_Library.php'); //подключаем библиотеку
if($charset != 'utf-8'){
$pageTitle = iconv($charset,"utf-8",$pageTitle);
$description = iconv($charset,"utf-8",$description);
if(!empty($pageDate_create)){
$pageDate_create = iconv($charset,"utf-8",$pageDate_create);
}
}
$client = new IXR_Client("$blogUrl/xmlrpc.php");
$client->timeout = 60000;
$requestData[0] = 0; //id блога
$requestData[1] = $username; //имя пользователя
$requestData[2] = $password; //пароль
$post = array();
$post['post_title'] = $pageTitle;
$post['post_category'] = array(22); //ID категории
$post['post_content'] = $description; // сам текст
$post['post_status'] = 'publish'; // пост сразу публикуется
$post['post_type'] = 'post'; // тип поста - тут возможно указать таксономия
$post['tags_input'] = $pageTags;
$post['comment_status'] = 'closed';
if(!empty($pageDate_create))
{
$pageDate_create = $this->parseTimestamp($pageDate_create);
$post['post_date_gmt'] = $pageDate_create;
}
$post['tax_input'] = array('model' => $staring); // пример таксономий модели
$requestData[3] = $post;
if (!$client->query('my.publish_post', $requestData)) {
echo 'Publish Post error: '.$client->getErrorMessage();
return;
}
$publishedPost = $client->getResponse();
$this->published($pageId);
return TRUE;
}
На стороне wp в файле function 1. Создаю таксономию
PHP:
function model_init() {
register_taxonomy(
'model',
'post',
array(
'label' => __('model'),
'labels'=>array(
'name'=>__('models'),
'singular_name'=>__('model'),
'edit_item' => __( 'Edit model' ),
'update_item' => __( 'Update model' ),
'add_new_item' => __( 'Add New model' ),
'new_item_name' => __( 'New model Name' ),
'separate_items_with_commas' => __( 'Separate models with commas' ),
'add_or_remove_items' => __( 'Add or remove models' ),
'choose_from_most_used' => __( 'Choose from the most used models' ),
'menu_name' => __( 'Models' ),
),
'sort' => true,
'args' => array('orderby' => 'term_order'),
'public'=>true,
'show_in_nav_menus'=>true,
'show_ui'=>true,
'show_tagcloud'=>true,
'hierarchical'=>false,
'rewrite' => array('slug' => 'model'),
)
);
}
add_action( 'init', 'model_init' );
PHP:
function my_publish_post($args) {
$blog_id = (int) $args[0];
$username = $args[1];
$password = $args[2];
$post_data = $args[3];
if ( !get_option( 'enable_xmlrpc' ) ) {
return new IXR_Error( 405, sprintf( __( 'XML-RPC services are disabled on this site. An admin user can enable them at %s'), admin_url('options-writing.php') ) );
}
$user = wp_authenticate($username, $password);
if (is_wp_error($user)) {
return new IXR_Error(403, __('Bad login/pass combination.'));
}
wp_set_current_user( $user->ID );
if ( !current_user_can( 'edit_private_posts' ) ) {
return new IXR_Error( 401, __( 'Sorry, you cannot edit private posts.' ) );
}
if (!is_array($post_data)) {
return new IXR_Error( 401, __( 'Sorry, no post data not found.' ) );
}
$id = wp_insert_post( $post_data );
if ($id === 0) {
return new IXR_Error( 401, __( 'Post save error.' ) );
}
$post = array();
$post['id'] = $id;
$post['permalink'] = get_permalink($id);
return $post;
}
На текущий момент отлично всё постит с таксономиями . Скажите мне пожалуйста, как мне передать картинку в секцию ''set featured image? Что поменять на стороне клиента и сервера. Может код у кого готовый есть, наверняка кто нить пытался передать.