WordPress Hosting

Requerir imagen destacada (actualizado 2022)

No hace tanto que vimos un modo sencillo de obligar a los usuarios que definan imagen destacada para las entradas, en aquella ocasión mediante un sencillo pero efectivo plugin.

Hoy vamos a ver cómo lograr lo mismo pero con unas líneas de código.

Y es que lo único que tienes que hacer es añadir el siguiente código a tu plugin de utilidades o al archivo functions.php del tema activo:

/* Requerir imagen destacada */
add_action('save_post', 'ayudawp_comprobar_miniatura');
add_action('admin_notices', 'ayudawp_error_miniatura');
function ayudawp_comprobar_miniatura($post_id) {
    // cambia esto para cualquier tipo de contenido personalizado
    if(get_post_type($post_id) != 'post')
        return;
    if ( !has_post_thumbnail( $post_id ) ) {
        // se muestra un mensaje a los usuarios
        set_transient( "has_post_thumbnail", "no" );
        // desengancha la funcion para evitar un loop infinito
        remove_action('save_post', 'ayudawp_comprobar_miniatura');
        // actualiza la entrada y la pone como borrador
        wp_update_post(array('ID' => $post_id, 'post_status' => 'draft'));
        add_action('save_post', 'ayudawp_comprobar_miniatura');
    } else {
        delete_transient( "has_post_thumbnail" );
    }
}
function ayudawp_error_miniatura()
{
    // comprueba si falta la imagen y muestra el mensaje de error
    if ( get_transient( "has_post_thumbnail" ) == "no" ) {
        echo "<div id='message' class='error'><p><strong>Debes definir una imagen destacada. Se ha guardado tu entrada pero no puedes publicarla aún.</strong></p></div>";
        delete_transient( "has_post_thumbnail" );
    }
}

El mensaje resultante sería así:

aviso asignar imagen destacada

Si lo deseas puedes cambiar el texto a mostrar, el resto funciona solo y de maravilla. Si quieres adaptarlo a algún tipo de contenido personalizado cambia la condición get_post_type a tu tipo de contenido personalizado.

Compartir en redes
Resumir con IA

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en las estrellas para valorarlo!

Promedio de puntuación 5 / 5. Total de votos: 3

¡Todavía no hay votos! Sé el primero en valorar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en las redes sociales!

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!



Sobre el autor

9 comentarios en “Requerir imagen destacada (actualizado 2022)”

  1. Javi Vicente

    Hola Fernando,

    Muy buen truco pero creo que hay cosas que no terminan de funcionar o al menos a mí, que lo he implementado con alguna variación.

    En primer lugar, si un usuario entra directamente a ver todas las entradas, le aparece un borrador automático por defecto, además de aparecerle el error sin ni siquiera guardar nada.

    Si intenta eliminarlo, no puede porque le cambia el estado a «draft».

    ¿Os ha ocurrido esto también a alguno?

    (Utilizo la versión recientemente actualizada 3.8.1)

    1. Hola Fernando,

      A nosotros nos pasa exactamente lo mismo que comenta Javi Vicente. Nos salen dos borradores nada más entrar en la home.

      Además el código tiene otro bug, ya que no solo no permite publicar sin marcar la imagen predefinida sino que tampoco permite borrar el post sin asignarle dicha imagen.

      Saludos,

  2. Juanma Espinosa

    Increíble Fernando!

    Justo lo que andaba buscando. Lo pruebo y comento que tal

  3. Javi Vicente

    Creo que ya he detectado de donde provenía el problema del borrador automático.

    El problema estaba en el widget del Escritorio, el quick press, que guardaba automáticamente ese borrador. Si estaba deshabilitado por usuario, no lo creaba, igual que si se accedía directamente a la pantalla de edición o crear nueva entrada.

    Para solucionarlo, hay que desactivar el widget con este código en functions.php:

    function remove_dashboard_widgets() {

    global $wp_meta_boxes;

    unset($wp_meta_boxes[‘dashboard’][‘side’][‘core’][‘dashboard_quick_press’]);

    }

    add_action(‘wp_dashboard_setup’, ‘remove_dashboard_widgets’ );

      1. Javi Vicente

        Pues si tenía pocas dudas, ahora ya no tengo ninguna. Acabas de confirmarme que si no lo usas y no te pasaba, era de eso.

        Gracias a ti crack!

        Un abrazo!

  4. Para enviar los artículos sin imagen a la papelera tenéis que sustituir la línea 08 del código de Fernando por:

    if ( !has_post_thumbnail( $post_id ) && ‘trash’ != get_post_status( $post_id ) ) {

    Muchas gracias Fernando por el artículo.

Los comentarios están cerrados.

Scroll al inicio