Как включить wpautop для содержимого XMLRPC

Я использую поддержку WordPress XMLRPC .

Содержимое, полученное с помощью клиента XMLRPC , не содержит автоматически добавленных тегов <p> , тогда как страницы, созданные в блоге WordPress, выполняются.

Есть ли простой способ получить теги <p> проходящие через содержимое XMLRPC ?

Solutions Collecting From Web of "Как включить wpautop для содержимого XMLRPC"

Таким образом, функция xmlrpc get_post по умолчанию не имеет никаких хороших фильтров для использования. Решение: сверните свой собственный обратный вызов XML-RPC!

xmlrpc_methods к xmlrpc_methods и добавьте настраиваемый метод, в этом случае называемый post_autop . Ключ массива будет именем метода и значением обратного вызова метода.

 <?php add_filter( 'xmlrpc_methods', 'wpse44849_xmlrpc_methods' ); /** * Filters the XMLRPC method to include our own custom method */ function wpse44849_xmlrpc_methods( $method ) { $methods['post_autop'] = 'wpse44849_autop_callback'; return $methods; } 

Тогда у нас есть функция обратного вызова, которая получит массив $args . Что будет делать несколько простых вещей: зарегистрируйте пользователя (подтвердите имя пользователя / пароль), затем выберите сообщение, которое мы хотим, заменим текст версией autop'd и вернем сообщение.

 <?php function wpse44849_autop_callback( $args ) { $post_ID = absint( $args[0] ); $username = $args[1]; $password = $args[2]; $user = wp_authenticate( $username, $password ); // not a valid user name/password? bail. if( ! $user || is_wp_error( $user ) ) { return false; } $post = get_posts( array( 'p' => $post_ID ) ); // no posts? bail. if( empty( $post ) ) { return false; } $post = $post[0]; // the magic happens here $post->post_content = wpautop( $post->post_content ); return (array) $post; } 

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

Я использовал немного Python, чтобы проверить это.

 >>> import xmlrpclib as xmlrpc >>> s = xmlrpc.ServerProxy('http://localhost/xmlrpc.php') >>> post = s.post_autop(1, 'admin', 'password') >>> post # content of the post here as a Python dict