Принцип работы сервера довольно простой
Принцип работы сервера довольно простой. В начале мы загружаем скрипты WP для того, чтобы получить доступ к встроенным функциям, и библиотеку Incutio XML-RPC Library (она входит в дистрибутив WP). Затем создаём сервер. Для этого наследуем класс IXR_Server. В конструкторе указываем массив с перечнем методов, которые поддерживает данный сервер. В этом примере метод только один – wp_extended. create_product. И создаём метод create_product, который и добавляет запись. Этому методу мы передаём массив с данными для создания записи. Формат передачи данных произвольный, тут всё зависит от вас. Главное, соблюдать его при создании XML-RPC клиента. Первыми элементами массива идут имя пользователя и пароль.
Будьте внимательны, если вы забудете авторизовать пользователя, то кто угодно сможет публиковать записи. Внутри метода create_product мы проверяем полученные логин и пароль. Для этого используется метод login_pass_ok. Я его просто скопировал из файла xmlrpc. php. В нём выполняется две проверки. 1) Разрешена ли работа через XML-RPC. 2) Проверяется логин и пароль пользователя. Затем мы с помощью функции wp_insert_post создаём запись. При этом заполняем массив с данными. Часть этих данных (например, заголовок и текст записи) мы получаем от клиента, но некоторые поля заполняем на сервере. Сюда относятся: 1) post_type – тип записи; 2) post_author – id автора записи (для его получения используем логин пользователя); 3) ping_status – указывает, разрешены или запрещены трекбеки и пингбеки для данной записи, используем текущие настройки для всего блога. Если запись успешно создана, отправляем клиенту сообщение, включающее её id, если нет – описание ошибки. Обратите внимание на последнюю строчку этого скрипта. Для того, чтобы запрос был обработан, необходимо создать экземпляр нашего класса. Шаг 4. Создаём XML-RPC клиент. Здесь я покажу только код добавления новой записи. Для полноценной работы нужно будет создать соответствующий интерфейс.