私はWordpress XMLRPCサポート を使用しています。
XMLRPCクライアントを介して取得されたコンテンツには、自動的に追加された<p>
タグがありませんが、Wordpressインストールのブログにレンダリングされたページにはあります。
<p>
タグをXMLRPCの内容から取得する簡単な方法はありますか?
そのため、デフォルトのxmlrpc get_post
関数には、使用するためのNiceフィルタがありません。解決策:独自の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
の配列を受け取ります。これはいくつかの簡単なことをするでしょう:ユーザをログインさせ(ユーザ名/パスワードを確認し)、次に欲しい記事を取得し、テキストを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