{"id":916,"date":"2022-02-23T12:26:00","date_gmt":"2022-02-23T12:26:00","guid":{"rendered":"https:\/\/hugocalixto.es\/?p=916"},"modified":"2022-02-23T12:26:00","modified_gmt":"2022-02-23T12:26:00","slug":"poner-una-imagen-destacada-en-un-post","status":"publish","type":"post","link":"https:\/\/hugocalixto.com\/demos\/huuguu-lite\/blog\/poner-una-imagen-destacada-en-un-post\/","title":{"rendered":"Obligar a WordPress a poner una imagen destacada en un POST"},"content":{"rendered":"\n<p>Probablemente en alguna ocasi\u00f3n por descuido u olvido, o quiz\u00e1s por las prisas, no has establecido una imagen destacada en un post. Y si no eres t\u00fa, quiz\u00e1s alguno de los autores que puedas tener en tu blog.<\/p>\n\n\n\n<p>De cualquier manera, en estos casos, ser\u00eda bueno no permitir que se publique un post hasta que tenga una imagen destacada asociada. O que el campo de la imagen destacada sea obligatorio, no permiti\u00e9ndote publicar hasta que subas o pongas una imagen destacada.<\/p>\n\n\n\n<p>Si el dise\u00f1o o <a href=\"https:\/\/hugocalixto.es\/\">maquetaci\u00f3n del sitio<\/a> requiere que muestres la imagen destacada de tus posts para que no se rompa nada, la soluci\u00f3n es hacer que el campo de la imagen de destaque sea un campo obligatorio al publicar contenido.<\/p>\n\n\n\n<p>Para conseguirlo, a\u00f1ade el siguiente c\u00f3digo al functions.php de tu tema o al plugin de utilidades:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function featured_image_required($hook) {\n    if ( 'post.php' != $hook &amp;&amp; 'post-new.php' != $hook ) {\n        return;\n    }\n \n    wp_enqueue_script( 'featured-image-required', get_theme_file_uri('\/js\/myscript.js') );\n}\nadd_action( 'admin_enqueue_scripts', 'featured_image_required' );<\/code><\/pre>\n\n\n\n<p>Puedes personalizar este c\u00f3digo para tus entradas (post) o para un tipo de entrada personalizado que necesites. Simplemente a\u00f1ade un archivo JS en la cola de scripts del administrador, donde, a trav\u00e9s de un script jQuery, detectaremos si t\u00fa o uno de tus autores ha puesto una imagen o no.<\/p>\n\n\n\n<p>Cree un archivo JS y col\u00f3quelo en la carpeta \/ js de su tema. En este archivo tendremos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>jQuery(document).ready(function ($) {\n    $('#post').submit(function() {\n        if ($(\"#set-post-thumbnail\").find('img').size() &gt; 0) {\n            return true;\n        }else{\n            alert(\"\u00a1No olvides establecer una imagen destacada!\");\n            return false;\n        }\n        return false;\n    });\n});<\/code><\/pre>\n\n\n\n<p>En el caso, simplemente buscamos si tenemos la etiqueta img dentro del enlace con ID set-post-thumbnail, o lo que podr\u00eda ser lo mismo, si hemos colocado una imagen. Si es as\u00ed, simplemente devolvemos true para guardar y publicar la entrada.<\/p>\n\n\n\n<p>En caso contrario, mostramos una alerta en la pantalla indicando al usuario que no ha puesto una imagen destacada. Y devolvemos false para cortar el env\u00edo del formulario.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-evite-registrar-una-entrada-si-no-tiene-una-imagen-prominente-en-el-lado-del-servidor\">Evite registrar una entrada si no tiene una imagen prominente en el lado del servidor<\/h2>\n\n\n\n<p>En el ejemplo anterior, vimos c\u00f3mo evitar la publicaci\u00f3n de un post si no tiene una imagen destacada del lado del cliente (usando JavaScript). Un usuario avanzado puede publicar una entrada desactivando JavaScript en el navegador o poniendo un valor ficticio en la etiqueta img con el inspector de elementos.<\/p>\n\n\n\n<p>Veamos ahora c\u00f3mo evitarlo en el lado del servidor. Debemos a\u00f1adir las siguientes funciones en functions.php o en nuestro plugin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function check_featured_image( $post_id ) {\n\/\/ establecer el tipo de puesto (CPT)\nif( 'post' != get_post_type( $post_id ) ) {\nvolver;\n}\n\n\/\/ confirmando la acci\u00f3n de envio\n$post = get_post($post_id);\n\nif ('publish' == $post-&gt;post_status) {\nif ( ! has_post_thumbnail( $post_id ) ) {\n\/\/ Crear un transitorio para mostrar un mensaje de error\nset_transient( \"has_featured_image\", \"no\" )\n\n\/\/ Desactivar el gancho para evitar el bucle infinito\nremove_action( 'save_post', 'check_featured_image' )\n\n\/\/ Guardar el post como borrador\nwp_update_post( array( 'ID' =&gt; $post_id, 'post_status' =&gt; 'draft' )\n\n\/\/ Activar el gancho de nuevo\nadd_action( 'save_post', 'check_featured_image' )\n} si no {\ndelete_transient( 'has_featured_image' )\n}\n}\n}\nadd_action( 'save_post', 'check_featured_image' );\n\nfunction show_message_no_image() {\nif (\"no\" == get_transient(\"has_featured_image\" ) ) {?&gt;\n\n&lt;div id=\"mensaje\" class=\"error\"&gt;\n&lt;p&gt;&lt;strong&gt;Este post n\u00e3o possui imagem em destacada. Adicione um antes de postar&lt;\/strong&gt;&lt;\/p&gt;\n&lt;\/div&gt;\n\n&lt;?php delete_transient( \"has_featured_image\" );\n}\n}\nadd_action( 'admin_notices', 'show_message_no_image' );<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Aprenda hacer que el campo de la imagen de destaque sea un campo obligatorio al publicar contenido.<\/p>\n","protected":false},"author":1,"featured_media":920,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[],"class_list":["post-916","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress"],"_links":{"self":[{"href":"https:\/\/hugocalixto.com\/demos\/huuguu-lite\/wp-json\/wp\/v2\/posts\/916","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hugocalixto.com\/demos\/huuguu-lite\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hugocalixto.com\/demos\/huuguu-lite\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hugocalixto.com\/demos\/huuguu-lite\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hugocalixto.com\/demos\/huuguu-lite\/wp-json\/wp\/v2\/comments?post=916"}],"version-history":[{"count":0,"href":"https:\/\/hugocalixto.com\/demos\/huuguu-lite\/wp-json\/wp\/v2\/posts\/916\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hugocalixto.com\/demos\/huuguu-lite\/wp-json\/wp\/v2\/media\/920"}],"wp:attachment":[{"href":"https:\/\/hugocalixto.com\/demos\/huuguu-lite\/wp-json\/wp\/v2\/media?parent=916"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hugocalixto.com\/demos\/huuguu-lite\/wp-json\/wp\/v2\/categories?post=916"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hugocalixto.com\/demos\/huuguu-lite\/wp-json\/wp\/v2\/tags?post=916"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}