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" ); } }
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.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
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)
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,
Pues yo lo tengo puesto y no me pasa, me sale el aviso en todo el admin, nada más.
Increíble Fernando!
Justo lo que andaba buscando. Lo pruebo y comento que tal
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’ );
Gracias por compartir la solución, a mi no me pasaba porque nunca lo tengo activo, lo odio.
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!
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.
A tí por el apaño 🙂