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');
		}
	}

});

Posts Similares

  • Funções de usuários e Capacidades do WordPress – Parte 1: O básico

    Este artigo é parte de um tutorial dividido em três partes abordando o tópico dos usuários (users), funções (roles) e capacidades (capabilities) no WordPress. Esta série irá abordar a arquitetura e design dos user roles no WordPress; ressaltar as funções mais importantes para interação com usuários e gestão de roles e capabilities; e no último tutorial,…

  • Bloqueie Spammers de pegar os e-mails do seu WordPress

    Olá a todos. Depois de muito tempo volto para mostrar uma forma de bloquear que os spammers usem os emails do seu WordPress para uso de spam. Resolvi vir aqui depois de ler um Post no grupo do WordPress no Facebook, onde uma pessoas queria pegar os e-mails dos comentários de outros sites em WordPress….

  • Como acelerar seu blog WordPress usando menos plugins?

    Como acelerar seu blog WordPress usando menos plugins?

    Muitos artigos e blogueiros apresentam matérias mostrando métodos atuais para fazer seu WordPress mais rápido, recomendar soluções eficientes como ter arquivos CSS e JavaScript otimizados e concatenados, como usar CSS sprites e cache. Seguindo essa dica, na verdade este conceito, você pode fazer o seu blog carregar até duas vezes mais rápido (ou mais), e…

  • Jetpack: Editando o posicionamento dos botões de compartilhamento social

    Jetpack: Editando o posicionamento dos botões de compartilhamento social

    Utilizando o plugin Jetpack faz algum tempo, sempre me perguntei como os botões de compartilhamento social eram corretamente colocados após o conteúdo da postagem, e como eu poderia fazer um controle manual deste posicionamento para explorar isso melhor em cada tema. Aqui mesmo no TudoParaWP, os botões de compartilhamento são colocados antes e depois do…

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

2 Comentários

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