Requerir imagen destacada

destacado

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', 'wpds_check_thumbnail');
add_action('admin_notices', 'wpds_thumbnail_error');
function wpds_check_thumbnail($post_id) {
    // cambia esto para cualquier tipo de entrada personalizada
    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 look infinito
        remove_action('save_post', 'wpds_check_thumbnail');
        // actualiza la entrada y la pone como borrador
        wp_update_post(array('ID' => $post_id, 'post_status' => 'draft'));
        add_action('save_post', 'wpds_check_thumbnail');
    } else {
        delete_transient( "has_post_thumbnail" );
    }
}
function wpds_thumbnail_error()
{
    // 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 establecer una Imagen Destacada. Se ha guardado tu entrada pero no puedes publicarla aún.</strong></p></div>";
        delete_transient( "has_post_thumbnail" );
    }
}

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 entrada personalizada cambia la condición get_post_type a tu tipo de entrada personalizada.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(2 votos, promedio: 5)

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

9 comentarios en “Requerir imagen destacada”

  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 *

 

Ir arriba Ir al contenido