Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

Crear entradas con la REST API de WordPress desde un sitio web remoto

En un artículo anterior ya habíamos visto como trabajar con la REST API de WordPress, sin embargo en este artículo veremos en detalle cómo crear entradas desde otro sitio web, además usaremos la autenticación integrada y funciones propias de WordPress.

 

Autenticación en la REST API de WordPress

A partir de la version 5.6 de WordPress tienes integrada la funcionalidad de contraseña de aplicación, que servirá para que aplicaciones externas se conecten a tu sitio usando la REST API de WordPress.

Para tu usuario actual, puedes hacerlo desde el menú: Usuarios > Perfil, luego colocar algún nombre descriptivo para la contraseña:

Creación contraseña de aplicación

 
Una vez creada aparecerá la contraseña, la cual debes copiar ya que la usaremos en el código.

Contraseña de apliación creada

 
Las contraseñas de aplicación requiere HTTPs, por lo que si estas trabajando en tu máquina local tienes que agregar adicionalmente esta constante en el archivo wp-config.php para que pueda funcionar.

define( 'WP_ENVIRONMENT_TYPE', 'local' );

 

Código para crear entradas usando la REST API con autenticación

Con las credenciales creadas en el sitio remoto, puedes usar entonces el siguiente código en el sitio web de origen:

<?php
$login                  = 'admin';
$password               = 'MNEt Fz3F 9kwK j1fg 9qQo EUj0';
$remote_site    = 'http://wordpress-remoto.local/wp-json/wp/v2/posts';

$request = wp_remote_post(
        $remote_site,
        [
                'headers' => [ 'Authorization' => 'Basic ' . base64_encode( "$login:$password" ) ],
                'body'    => [
                        'title'      => 'Entrada creada con la API',
                        'content'    => 'Contenido de ejemplo',
                        'status'     => 'draft',
                        'meta'       => [
                                'nivel' => 'Avanzado',
                                'relacionados' => '1,2,3'
                        ]
                ]
        ]
);

if ( 'Created' !== wp_remote_retrieve_response_message( $request ) ) {
        error_log('No se ha podido crear', true);
}

 

Para ver una lista completa de los valores que se pueden pasar al crear la entrada puedes revisar la documentación del Schema Post
  • Para agregar las categorías se puede pasar un array con los IDs de las categorías, lógicamente deben ya existir en el sitio remoto
  • Para agregar los tags se puede pasar un array con los IDs, lógicamente deben ya existir en el sitio remoto
  • Para agregar un autor específico se puede pasar el ID del autor y debe existir en el sitio remoto
  • En el caso de la metadata de la entrada, será necesario registrarlos en el sitio web remoto con el siguiente código:
    <?php
    add_action('rest_api_init', function () {
        $metas = [
            "nivel",
            "relacionados",
        ];
    
        foreach ($metas as $meta) {
            register_meta(
                'post',
                $meta,
                [
                    'type' => 'string',
                    'single' => true,
                    'show_in_rest' => true
                ]
            );
        }
    });
    
    Si quieres agregar metadatos privados, posiblemente tengas que crear un endpoint para manipularlos

 
Al final obtendremos algo similar a la siguiente imagen:

Entrada creada resultado final

 

Conclusión

Como has podido comprobar, puedes agregar contenido desde otro sitio web remoto usando la REST API de WordPress, en este artículo hemos visto un ejemplo práctico de cómo realizar esto y usando la autenticación integrada de contraseñas de aplicación en WordPress.

 

La entrada Crear entradas con la REST API de WordPress desde un sitio web remoto es un artículo reciente del sitio DecodeCMS.

Enregistrer un commentaire

0 Commentaires