如何为XMLRPC内容启用wpautop

时间:2012-03-08 作者:quickshiftin

我在用WordpressXMLRPC support.

通过XMLRPC 客户端没有自动添加<p> 标签,而Wordpress安装的博客上呈现的页面则是。

有没有简单的方法<p> 标签通过XMLRPC 内容也一样?

1 个回复
最合适的回答,由SO网友:chrisguitarguy 整理而成

因此,默认的xmlrpcget_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;
}
当然,您可以在返回值之前对帖子进行任何自定义。这是上面的as a plugin.

我使用了一些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

结束

相关推荐

如何通过XML-RPC获取所有帖子(以块为单位)?

I would like to retrieve all posts of a blog via the XML-RPC API of Wordpress.有以下方法blogger.getRecentPosts 和metaWeblog.getRecentPosts 理论上,如果给出足够高的值作为职位数量(或-1),则应返回所有职位。但是,这不适用于非常大的博客或非常弱的服务器,这些服务器无法在内存中保存整个博客。在这种情况下,这些函数最多不会返回任何内容,也不会向响应XML中抛出错误。一种解决方案是一次检