Cómo habilitar wpautop para contenido XMLRPC

5

Estoy usando Wordpress compatibilidad con XMLRPC .

El contenido obtenido a través de un cliente XMLRPC no tiene las etiquetas <p> agregadas automáticamente, mientras que las páginas representadas en el blog de la instalación de Wordpress tienen.

¿Hay una manera fácil de obtener las etiquetas <p> que vienen a través del contenido XMLRPC también?

    
pregunta quickshiftin 08.03.2012 - 02:40

1 respuesta

4

Por lo tanto, la función xmlrpc get_post predeterminada no tiene ningún filtro agradable para que uses. La solución: ¡enrolle su propio callback XML-RPC!

Enganche en xmlrpc_methods y agrega un método personalizado, en este caso llamado post_autop . La clave de la matriz será el nombre del método y el valor la devolución de llamada del método.

<?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;
}

Luego tenemos nuestra función de devolución de llamada, que recibirá una matriz de $args . Lo que hará algunas cosas simples: iniciar sesión en el usuario (validar nombre de usuario / contraseña), luego recuperar la publicación que queremos, reemplazar el texto con una versión automática y devolver la publicación.

<?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;
}

Por supuesto, puede realizar cualquier personalización que desee en la publicación antes de devolver el valor. Aquí se encuentra el como complemento .

Usé un poco de Python para probar esto.

>>> 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
    
respondido por el chrisguitarguy 10.03.2012 - 08:07

Lea otras preguntas en las etiquetas