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
- The Inutio XML-RPC Library
- WordPress 2.7
- 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.
- insert(): Inserta un comentario en el blog destino
- getComment(): Nos retorna un array con la información del comentario solicitado.
- 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.
6 comentarios, 6 referencias
+
#