Contenido

Jugando con el API de comentarios de WordPress 2.7

20 Dic

+ 12

La llegada de WordPress 2.7, además de un importante cambio visual ha significado un cambio en la forma de interactuar con el blog. Anteriormente la API del blog únicamente daba la posibilidad de insertar/editar/borrar posts, enviar pigbacks/tracbacks y poca cosa más, ahora con la inclusión de los comentarios en la API las posibilidades son espectaculares.

Una muestra de ello es, por ejemplo, el Notificador de comentarios para MacOS X, que usa esta nueva propiedad para detectar cuando se ha añadido un nuevo comentario.

Pues visto que esta nueva funcionalidad puede dar mucho juego he estado jugando un poco con ella y he montado un primer boceto de lo que sería una clase en PHP que nos permita trabajar con ella fácilment.

Requerimientos

  1. The Inutio XML-RPC Library
  2. WordPress 2.7
  3. PHP5 Akismet (Opcional)

Funcionamiento

El funcionamiento de esta clase es muy sencillo, mediante una petición XML-RPC desde el servidor origen, lanzamos una petición del tipo (insert/getComment/getComments) al servidor destino (que ha de ser un WordPress 2.7) y este nos devuelve el resultado de nuestra petición.

Métodos

Los métodos que he montado, son los que crea básicos para ver el funcionamiento del API, quizas los extienda, o si alguien quiere hacerlo que avise.

  1. insert(): Inserta un comentario en el blog destino
  2. getComment(): Nos retorna un array con la información del comentario solicitado.
  3. getComments(): Nos retorna un array con los comentarios solicitados.

Modo de uso

Como cualquier clase de PHP su uso es muy sencillo, inicialmente debemos crear el objeto pasandolé unos parámetros de configuración:

$comment = new wpComment($url, $user, $password);
  • $url: URL del fichero xmlrpc.php del blog de destino.
  • $user: Usuario con el que se podrá comentar en el blog (por defecto «»)*
  • $password: Password del usuario (por defecto «»)*

* – Si el blog está abierto a comentarios anónimos estos parámetros se pueden pasar en blanco para la insercción (insert). Las peticiones de consulta (getComment, getComments) requieren user y pass para devolver datos.

Una vez creado el objeto $comment, podremos hacer uso de los métodos anteriores para interactuar con el blog destino.

insert()

 $comment_id = $comment->insert($post_link, $author, $author_email, $author_url, $content);
 if ($comment_id)
	echo '<a href="'.$post_link.'#comment-">Ver comentario</a>';
 else
	echo 'Ha ocurrido un problema';
  • $post_link: Post en el que deseamos insertar el comentario
  • $author: Author del comentario
  • $author_email: Email del Author
  • $author_url: URL del Author
  • $content: Contenido del comentario.

La ejecución de este método devolverá, en caso de no devolver un error,  el ID del comentario recien insertado.

getComment()

$comment_id = 52766;
echo "<pre>";
print_r($comment->getComment($comment_id));
echo "</pre>";
  • $comment_id: ID del comentario que queremos obtener.

Este método, nos devolverá un array con los valores relacionados al comentario.

Array
(
    [date_created_gmt] => IXR_Date Object
        (
            [year] => 2008
            [month] => 09
            [day] => 26
            [hour] => 17
            [minute] => 11
            [second] => 09
        )

    [user_id] => 1
    [comment_id] => 50868
    [parent] => 0
    [status] => approve
    [content] => @Manolo: Tiene pinta de estar bien, mira a ver si tienes un plugin que está cacheando la salida, wp-cache, wp-supercache, ...si es así, desactivalo y vuelve a probar.

Dinos cosas.
    [link] => https://www.anieto2k.com/2008/01/13/query_posts-personalizando-nuestros-blogs/comment-page-1/#comment-50868
    [post_id] => 4964
    [post_title] => query_posts(), personalizando nuestros blogs
    [author] => aNieto2k
    [author_url] => https://www.anieto2k.com
    [author_email] => xxx@xxx.com
    [author_ip] => xx.xx.xx.xx
    [type] =>
)

getComments()

echo "<pre>";
print_r($comment->getComments(array('post_id' => '', 'status' => '', 'offset' => '', 'number' => '')));
echo "</pre>";
  • $post_id: Es el ID del post del que queremos obtener los comentarios (Opcional)
  • $status: Estado de los comentarios que queremos obtener (Opcional) (0, 1,spam)
  • $number: Número de comentarios que deseamos obtener (Opcional)
  • $offset: Posición inicial de busqueda (Opcional)

El resultado será un array con los comentarios solicitados.

Array
(
    [0] => Array
	(
	....
	)
    [1] => Array
	(
	....
	)
    [2] => Array
	(
	....
	)
    [3] => Array
	(
	....
	)
)

Usando Akismet

La clase está preparada para que el uso de Akismet esté soportado, únicamente necesita que el fichero Akismet.class.php esté en el mismo directorio de la clase y se definan al inicio de esta los valores que el API de Akismet necesita.

define('AKISMETURL','AKISMET_URL');
define('AKISMETKEY','AKISMET_KEY');

Este paso es altamente recomendable, ya que nos ayudará a filtrar los comentarios automáticamente.

Ver wpcomment.class.php

  • Super original y por lo que se ve promete mucho, pero en mi caso particular desde que actualicé a 2.7, los comentarios son un verdadero desastre, salen en otros posts distintos al que se fueron escritos, no se me notifica de que hay nuevos mensajes es un total desastre, alguien tiene algun problema similar?. Este es sin duda uno de los 10 mejores blogs en español que existe.

  • Hola Andres , solo queria decir que me hackeron mi blog y te pediria que escribas un post para que novatos como yo no vuelvan a caer en esto. Jamas crei que esto me sucederia , mi blog es reciente , y nunca pense que me sucederia esto. Para colmo de males mi pc fue infectada con un virus asqueroso que me malogro la maquina(no se si son los mismos que me hackearon el blog).
    Bueno disculpa por comentar fuera del tema , pero solo queria poder escribir algo sobre lo que me ocurrio y dejar constancia que esto es ya un problema de salud publica. No puede ser que estemos a merced de personas inescrupulosas y enfermas que se dediquen a hacer esto. Un saludo desde Perú.

  • Muchas gracias por la informacion , me ha sido de muchas utlilidad

  • Parece que mejora las utilidades de wordpress pero creo da problemas con los post agregados.

  • Muchas gracias por la información

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.