Obligar a usar imágenes destacadas en los posts de WordPress

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:

  1. Ve al panel de administración de WordPress.
  2. Navega a Apariencia > Editor de Temas.
  3. Encuentra el archivo functions.php de tu tema activo.
  4. Copia y pega el snippet al final del archivo.
  5. 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.

¡Más Snippets, Más Opciones!

Al compartir, motivamos a más desarrolladores a contribuir. Ayúdanos a hacer de este directorio un punto de referencia en snippets.

Facebook
Twitter
LinkedIn
Telegram
WhatsApp

¿Cómo implementar este snippet en la web?

Tienes 2 opciones, una de ellas es mediante plugin y la otra pegando el código en tu web.

1. Añadir snippet con plugin

code-snippets

Code Snippets

Por Code Snippets Pro

  1. Descarga el plugin o búscalo en el repositorio de plugins de Wordpress e instálalo en tu web.
  2. En el menú lateral del Escritorio verás un nuevo enlace (Fragmetos de código). Ves a Fragmentos de código > Añadir nuevo.
  3. Se abrirá una página con un título, bloque de código, descripción y etiquetas, rellena el título con el que quieras guardarlo, ejemplo: Añadir Google Analytics.
  4. En la parte código verás que está activo PHP, ahí pega el código del snippet
  5. La descripción y las etiquetas solo son para tu información y para que luego encuentres más fácil los snippets.
  6. Publicar y activar el snippet.

2. Añadir snippet en el functions.php

Diseño web con WordPress

Accede al archivo functions.php de tu tema o tema hijo, pega el snippet y guarda el archivo.

Lo encontrarás en Apariencia > Editor de archivos de tema, pinchas sobre el enlace  functions.php y pegas el código al final del archivo.

Relacionados: