Como solicitar imagem destacada como obrigatória?
Muitos temas de WordPress, sobretudo páginas iniciais e de arquivos/categorias, são altamente dependentes de imagens destacadas para apresentarem uma interface atrativa. Se você tem um tema assim, ou desenvolveu para um cliente que é assim, então você não pode permitir que sua postagem ou a de seu cliente fiquem sem imagem destacada, ou com uma imagem dizendo ‘Sem imagem destacada’.
Tenho um site assim, o GugaAlves.net, um blog pessoal que tem tais características, e cansei de esquecer de colocar uma imagem destacada e só notar depois. Por este motivo, trago uma solução para tal problema 🙂
Passo 1 – Criando a função
Adicione o script abaixo em seu arquivo functions.php
add_action( 'pre_post_update', 'request_featured_post' ); function request_featured_post($post_ID) { $post = get_post($post_ID); $request_publish_test = isset($_REQUEST['publish']); $request_under_status_test = isset($_REQUEST['_status']) && $_REQUEST['_status'] == 'publish'; if ( $post->post_type == 'post' &&( $request_publish_test || $request_under_status_test ) && !has_post_thumbnail($post_ID) ) { wp_die( 'Você não pode publicar um post sem imagem destacada!' ); } } add_action( 'admin_enqueue_scripts', 'rfi_admin_js' ); function rfi_admin_js($hook) { if( $hook != 'post.php' && $hook != 'post-new.php' ) return; wp_register_script( 'rfi-admin-js', get_template_directory_uri().'/js/publish_featured_post.js''), array('jquery')); wp_enqueue_script( 'rfi-admin-js' ); }
Passo 2 – Criando o arquivo javascript
Crie um arquivo chamado publish_featured_post.js e salve na pasta js em seu tema, com o conteúdo abaixo (se não tiver tal pasta, pode criar sem problemas).
jQuery(document).ready(function($) { if ($('body').find("#nofeature-message").length===0) { $('h2').after('<div id="nofeature-message"></div>'); } if ($('body').find("#categorydiv").length===1) { setInterval(detectWarnFeaturedImage, 5000); detectWarnFeaturedImage(); } function detectWarnFeaturedImage() { if( $('#postimagediv').find('img').length===0 ) { $('#nofeature-message').addClass("error").html('<p><strong>Este post está sem nenhuma imagem destacada.</strong> Por favor, adicione uma para poder publicar seu post.</p>'); $('#publish').attr('disabled','disabled'); } else { $('#nofeature-message').remove(); $('#publish').removeAttr('disabled'); } } });
Olá, muito obrigado pela sua dica. Funcionou perfeitamente no meu thema, sou iniciante em wordpress e estou aprendendo muito com auxilio do seu site.
Grata, Loola.
Muito bom, estava tentando fazer isso faz tempo e não sabia que tinha esses detalhes…