Как включить wpautop для содержимого XMLRPC
Я использую Wordpress Поддержка XMLRPC .
Контент, загруженный через клиент XMLRPC, не имеет автоматически добавляемых тегов <p>
, в то время как страницы, отображаемые в блоге установки Wordpress, имеют.
Есть ли простой способ получить теги <p>
, проходящие также через содержимое XMLRPC?
1 answers
Таким образом, функция xmlrpc по умолчанию get_post
не содержит хороших фильтров для использования. Решение: откатите свой собственный обратный вызов XML-RPC!
Подключитесь к 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
. Который сделает несколько простых вещей: войдите в систему пользователя (подтвердите имя пользователя/пароль), затем получите сообщение, которое мы хотите, замените текст автоматической версией и верните сообщение.
<?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