Parar la publicación de entradas con PHP

Publicada en WordPress.

Mira nuestro vídeo

Existe una versión mejor de tu web

Comparte este artículo

Si escribes entradas con cierta frecuencia es posible que te hayas encontrado en la tesitura de haber publicado una entrada y más tarde darte cuenta de que te habías olvidado incluir una imagen destacada, no habías puesto etiquetas ni categorías o no escribiste el extracto. ¡Vaya fallo!

Estaría bien que WordPress te avisara cuando te dejas cosas pendientes antes de publicar. Lamentablemente, por defecto WordPress no hace esto.

Plugins al rescate

En esta web siempre hemos intentado escribir artículos de calidad (no se si lo habremos conseguido, pero la intención está ahí). La solución que hemos estado utilizando hasta ahora es tener activo el plugin Pre-Publish Post Checklist.

Este plugin permite crear una lista de tareas que el autor tiene que ir marcando una vez va las va completando. Si intentamos publicar la entrada y alguna tarea de la lista no está marcada, simplemente nos avisa de esto y no nos permite la publicación.

Metabox del plugin Pre-Publish Checklist con la lista de tareas a completar.
Metabox del plugin Pre-Publish Checklist con la lista de tareas a completar antes de poder publicar.

La potencia del plugin reside en que la lista de tareas la especificas tú. Puedes crear tareas como, por ejemplo, incluir una imagen destacada, seleccionar una categoría, rellenar la información de SEO, etc. De este modo, cada vez que completas una acción de estas tienes que ir al meta box que Pre-Publish Post Checklist añade y marcar que ya lo has completado.

PHP como alternativa

Aunque el plugin que te acabo de indicar funciona correctamente, tener que ir marcando las tareas en la lista es un poco pesado cuando ya llevas muchas entradas escritas a tus espaldas. Una opción más interesante sería que la comprobación se realizara automáticamente y sólo nos avisara en caso de que faltara algo por incluir.

Afortunadamente podemos hacer esto directamente con PHP. Lo sé, es más complejo y requiere tocar código, algo que a muchos ya les asusta . Pero no solo de plugins vive el hombre. Y para algo tan sencillito quizás esta opción es mucho más efectiva.

El siguiente código PHP nos muestra la estructura que podemos seguir para parar la publicación en caso de que nuestra entrada no cumpla algunas condiciones:

Lo que hacemos aquí es usar la acción transition_post_status, que nos avisa cuando la entrada cambia de estado. En ese momento se ejecutará nuestra función comprueba_publicacion. Lo primero que miramos es que el nuevo estado de la entrada sea publish. En tal caso, debemos comprobar todas las condiciones que queramos y lanzar un wp_die para terminar la ejecución y mostrar un mensaje al usuario si alguna no se cumple. Esto evitará la publicación de la entrada.

Concretamente, en el código sólo comprobamos que la entrada tenga una imagen destacada y tenga etiquetas. Pero siéntete libre de añadir tus propias condiciones de acuerdo a tus necesidades.

Como siempre, puedes probar este código copiándolo y pegándolo en el archivo functions.php de tu tema. No incluyas la línea <?php ya que no es necesaria y puede romper tu instalación.

Resumen

Modificar el comportamiento por defecto de WordPress para controlar si una entrada puede o no publicarse es tremendamente sencillo y a la vez útil. Podemos usar plugins o bien añadir unas pocas líneas de PHP para conseguirlo.

Y tú, ¿ya lo haces en tu WordPress? Si utilizas un método diferente, estaré encantado de que me expliques cómo lo haces en los comentarios.

Imagen destacada de Phil Roeder.

2 comentarios en «Parar la publicación de entradas con PHP»

  1. 3 años escribiendo casi a diario y aún así en ocasiones se me olvidan poner la categoría…
    El plugin yo no me plantería utilizarlo, sería otra cosa a mayores a utilizar, pero el código Php está interesante.

Deja una respuesta

No publicaremos tu correo electrónico. Los campos obligatorios están marcados con: •

He leído y acepto la Política de privacidad de Nelio Software

Al marcar la casilla de aceptación estás dando tu legítimo consentimiento para que tu información personal se almacene en SiteGround y sea usada por Nelio Software con el propósito único de publicar aquí este comentario. Contáctanos para corregir, limitar, eliminar o acceder a tu información.