Este snippet de código para WordPress asegura que no puedas publicar un post sin antes haber establecido una imagen destacada. Es especialmente útil para mantener la coherencia visual y la calidad de los posts en tu sitio web.
¿Cómo Funciona?
Este snippet utiliza la acción save_post
de WordPress para ejecutar una función cada vez que intentas guardar un post. La función verifica si el post tiene una imagen destacada. Si no la tiene, el post se cambia automáticamente al estado de «borrador» y se muestra un mensaje de error en el panel de administración.
Instalación del Snippet
Para instalar este snippet, sigue estos pasos:
- Ve al panel de administración de WordPress.
- Navega a
Apariencia > Editor de Temas
. - Encuentra el archivo
functions.php
de tu tema activo. - Copia y pega el snippet al final del archivo.
- Guarda los cambios.
add_action('save_post', 'require_featured_image', 10, 3); function require_featured_image($post_id, $post, $update) { // Si el post es un "auto-draft" (es decir, aún no se ha guardado), no hagamos nada if ($post->post_status == 'auto-draft') { return; } // Obtener el tipo de post; puedes añadir más tipos de post a este array si lo deseas $required_post_types = array('post'); // Si el tipo de post está en nuestra lista y no tiene una imagen destacada, detenemos la actualización del post if (in_array($post->post_type, $required_post_types) && !has_post_thumbnail($post_id)) { // Eliminar la acción para evitar bucles infinitos remove_action('save_post', 'require_featured_image'); // Actualizar el post para ponerlo como "borrador" wp_update_post(array( 'ID' => $post_id, 'post_status' => 'draft' )); // Añadir un mensaje de error para informar al usuario add_filter('redirect_post_location', function($location) { return add_query_arg('featured_image_error', 1, $location); }); // Volver a añadir la acción add_action('save_post', 'require_featured_image', 10, 3); } } // Mostrar el mensaje de error si es necesario add_action('admin_notices', function() { if (isset($_GET['featured_image_error']) && $_GET['featured_image_error'] == 1) { echo '<div class="notice notice-error is-dismissible"><p><strong>Error:</strong> Debes establecer una imagen destacada antes de publicar este post.</p></div>'; } });
Casos de Uso
Este snippet es especialmente útil en los siguientes escenarios:
- Blogs con múltiples autores donde se quiere mantener una estética coherente.
- Sitios de noticias o revistas en línea que requieren imágenes para mejorar la experiencia del usuario.
- Portafolios en línea donde cada post debe tener una imagen representativa.
Personalización
El snippet está configurado para aplicarse solo a los posts estándar (post
). Si deseas extender esta funcionalidad a otros tipos de posts, puedes añadirlos al array $required_post_types
.
Por ejemplo, para aplicar la funcionalidad a los posts y a los productos de WooCommerce:
$required_post_types = array('post', 'product');
Mensaje de Error
El snippet también incluye un mensaje de error que se muestra en el panel de administración si intentas publicar un post sin una imagen destacada. El mensaje es:
Error: Debes establecer una imagen destacada antes de publicar este post.
Este mensaje se puede personalizar según tus necesidades.
Con este snippet, puedes asegurarte de que todos los posts en tu sitio web cumplan con el requisito de tener una imagen destacada, mejorando así la calidad y la coherencia visual de tu contenido.