Crear un post de WordPress con código

Hoy vamos a ver cómo crera un post mediente código.

Algo que a simple vista puede no tener ningún sentido pero que si lo pensamos detenidamente puede que existan circunstancias en las que será necesario utilizar esto como parte de un plugin o código más extenso.

Es el ejemplo que me ocupa ahora mismo en uno de los proyectos en los que estoy trabajando que no es otro que crear contenido de un tipo de contenido personalizado a partir de los datos que se solicitan a la base de datos. No voy a comentar más sobre esto porque luego todo se sabe…

Bueno, a lo que vamos…

wp_insert_post()

La función que vamos a utilizar para crear un post en este caso es wp_insert_post(). Como su nombre indica o podemos intuir, nos va a permitir insertar o crear un post.

Teneís información sobre la función wp_insert_post() en este enlace.

Como vamos a hacerlo sencillo os pongo un ejemplo a continuación y luego lo comentamos un poco:

Si probáis el código anterior, tened cuidado y hacedlo en un sitio en desarrollo o mejor de pruebas en local. Os digo esto porque aunque el código hace lo que tiene que hacer, no hemos incluído ningún check para saber si ya existe un post como el que estamos creando y por consiguiente se crearán posts iguales constantemente.

Yo he hecho la prueba para que os hagáis una idea y lo podéis ver en la siguiente captura:

Esto es sólo de un momento, unos 20 segundos, si le dejo más tiempo, seguirá creando posts y posts. Un sin parar, vamos…

Bien, ahora analicemos un poco la función que hemos usado.

Hemos usado varias variables para que guarden el contenido que queremos para usarlas dentro del array. Estas variables contendrásn la ID del autor, el slug, el título y el contenido del post: $author_id, $slug, $title, $content.

Postermiormente utilizamos la función wp_insert_port() para crear el post con el contenido que queremos usar dentro de un array.

No creo que haga falta mucha explicación porque se reconocen bastante bien las diferente opciones.

Comprobar si el post ya existe

Para este caso voy a crear una función que compruebe o más bien compare el slug del post que quiero crear con todos los slugs que ya hay creados. Es más, en esta función le especifico que mire sólo en posts.

Podríamos usar esto también con custom posts types osea que ahí queda eso. Pero como digo, para este ejemplo lo haremos con posts.

El código de la función que os comento es el siguiente:

Como podéis observar, mediante el array le pasamos los datos de los posts que queremos que chequee.

Esta función no tiene mucho más misterio, simplemente hace na consulta de todos los posts que cumplan los argumentos que le pasamos en el array.

Esta función es la que vamos autilizar para completar nuestro snippet.

El código completo

Una vez que hemos creado las dos partes que van a componer este snippet, las juntamos y añadimos un condicional para que chequee si el slug ya existe si no existe creará el post con los datos que le indicamos en el array y si ya existe no lo creará.

Ah, bueno, algo muy importante… el hook.

El hook que usaremos será «after_setup_theme» y es en ese hook donde ejecutaremos la función que creará el post.

Aquí tenéis el código comleto para vuestro uso y disfrute:

Y el resutado, como era de esperar será el siguiente:

Sin mas, nos vemos en el siguiente.

1 comentario en «Crear un post de WordPress con código»

  1. Hola Oscar, estoy montando un proyecto personal en el que varios usuarios pueden crear contenido que luego van a vender dentro de un post. La idea era usar Pay for post with woocommerce. El problema que tengo es que tengo que crear un post y un producto de woocommerce. Estoy usando ACF y ACF Fronted from.

    Con tu artículo he conseguido que al cargar la página donde está el formulario para crear el producto de woocommerce. ¿cómo podría hacer para que al darle a submint lance el código con las variables que recoja ese formulario?

    Un saludo de antemano.

    Responder

Deja un comentario