Crear post en WordPress con php

Es muy sencillo usar las capacidades de WordPress para crear posts usando un script escrito en PHP. De esta forma podemos integrar el motor de publicación a otros procesos que tengamos ya programados, por ejemplo en un lector de feeds RSS.

El primer paso a realizar es habilitar la opción de publicación remota en nuestra instalación de WordPress, la cual viene deshabilitada por default (fig. 1).

Activar RPC-XML

Fig. 1 Activar RPC-XML

Una vez habilitada la casilla XML-RPC en las opciones de escritura del panel de control, porcedemos a la escritura del script:

function wpPostXMLRPC($title,$body,$rpcurl,$username,$password,
$categories=array(1)){
$categories = implode(",", $categories);
$XML = "".
"".
$body;
$params = array('','',$username,$password,$XML,0);
$request = xmlrpc_encode_request('blogger.newPost',$params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
curl_setopt($ch, CURLOPT_URL, $rpcurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
$results = curl_exec($ch);
curl_close($ch);
return $results;
}

La función es muy explícita por sí misma pero señalemos dos puntos importantes:
El sexto parámetro recibe un arreglo el cual contiene la categoría bajo la cual se agregará nuestro nuevo post. De tal forma debemos saber el ID que la categoría seleccionada para nuestro post. Este lo obtenemos yendo a la sección de categorías y seleccionar la que hemos de ocupar. En la barra de direcciones podremos identificar el ID de la categoría e integrarla a nuestro arreglo.

Otro punto es el quinto elemento del arreglo llamado $params el cual indica si el post será Publicado(1) de inmediato o permanecerá como Draft(0). En este ejemplo el post permanece como Draft(0).

Modo de uso:

$title ="Título del post";
$body = "Este es el contenido de nuestro post.";
$username="usuario";
$password="password123";
$rpcurl = "http://URLDelBlog.com/xmlrpc.php";
echo wpPostXMLRPC($title,$body,$rpcurl,$username,$password,
$categoria);

Listo.

Artículos relacionados:

Leave a Reply