Oferta SiteGround Black Friday

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.

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

¡Haz clic en los emoticonos para valorarlo!

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

Hasta ahora ¡no hay votos!. Sé el primero en valorar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en las redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Ayúdame a mejorar este contenido!

Por favor, dime, ¿cómo puedo mejorarlo?

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

AVISO: Esta publicación es de hace 3 años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado. ¡Ah! ¿te funciona? pues entonces no he dicho nada :)

Sobre el autor

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

  1. 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. 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. 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!

  3. 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.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información base sobre privacidad:
- Responsable: Fernando Tellado ([email protected])
- Fin del tratamiento: Moderación de comentarios para evitar spam
- Legitimación: Tu consentimiento
- Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal
- Derechos: Acceso, rectificación, portabilidad, olvido

 

Scroll al inicio