Como Criar um Widget Personalizado do WordPress (Passo a Passo)

Widgets permitem que você adicione elementos que não são de conteúdo a uma barra lateral ou a qualquer área pronta para widgets em seu site WordPress. Você pode usá-los para adicionar banners, anúncios, formulários de inscrição para newsletters e outros elementos ao seu site.

Você também pode criar um widget personalizado para incorporar funções exclusivas com um toque personalizado, como feeds de mídia social, posts recentes ou tags HTML.

Na WPBeginner, usamos widgets personalizados para exibir diferentes tipos de conteúdo na barra lateral do nosso site. E neste artigo, mostraremos como criar um widget WordPress personalizado, passo a passo.

Como criar um widget personalizado do WordPress (passo a passo)

Observação: Este tutorial é para usuários de WordPress que estão aprendendo desenvolvimento e codificação WordPress.

O que é um Widget WordPress?

Widgets WordPress contêm trechos de código que você pode adicionar às barras laterais ou áreas prontas para widgets do seu site.

Pense neles como módulos que você pode usar para adicionar diferentes elementos e funcionalidades ao seu site.

Por padrão, o WordPress vem com um conjunto padrão de widgets que você pode usar com qualquer tema WordPress. Para mais detalhes, consulte nosso guia para iniciantes sobre como adicionar e usar widgets no WordPress.

Seção de widgets do WordPress

O WordPress também permite que os desenvolvedores criem seus próprios widgets personalizados.

Muitos temas WordPress premium e plugins vêm com seus próprios widgets personalizados que você pode adicionar às suas barras laterais.

Por exemplo, você pode adicionar um formulário de contato, um formulário de login personalizado, uma galeria de fotos, um formulário de inscrição para lista de e-mails e muito mais a uma barra lateral sem escrever nenhum código.

Dito isso, vamos ver como você pode facilmente criar seus próprios widgets personalizados no WordPress.

Antes de Criar um Widget Personalizado no WordPress

Se você está aprendendo a codificar em WordPress, precisará de um ambiente de desenvolvimento local. Isso lhe dá a liberdade de aprender e testar coisas sem a preocupação de seu site estar no ar.

Você pode instalar o WordPress localmente no Mac usando MAMP ou no Windows usando WAMP.

Se você já tem um site ativo, pode movê-lo para um host local. Para mais detalhes, veja nosso guia sobre como mover um site WordPress ativo para um servidor local.

Depois disso, existem várias maneiras de adicionar seu código de widget personalizado no WordPress.

Idealmente, você pode criar um plugin específico do site e colar seu código de widget lá. Isso permite que você adicione código ao WordPress que não depende do seu tema WordPress.

Você também pode colar o código no arquivo functions.php do seu tema. No entanto, ele só estará disponível quando esse tema específico estiver ativo.

Outra ferramenta que você pode usar é o plugin WPCode, que permite adicionar facilmente códigos personalizados ao seu site.

Neste tutorial, criaremos um widget simples que apenas cumprimenta os visitantes. O objetivo aqui é familiarizá-lo com a classe de widget do WordPress.

Pronto? Vamos começar.

Criando um Widget Básico do WordPress

O WordPress vem com uma classe de Widget do WordPress integrada. Cada novo widget do WordPress estende a classe de widget do WordPress.

Existem 19 métodos mencionados no manual do desenvolvedor do WordPress que podem ser usados com a classe WP Widget.

No entanto, para fins deste tutorial, focaremos nos seguintes métodos.

  • __construct() : Esta é a parte onde criamos o ID do widget, título e descrição.
  • widget : É aqui que definimos a saída gerada pelo widget.
  • form : Esta parte do código é onde criamos o formulário com opções de widget para o backend.
  • update: Esta é a parte onde salvamos as opções do widget no banco de dados.

Para criar um widget personalizado, você pode copiar e colar o seguinte trecho de código no seu arquivo functions.php ou no WPCode (recomendado):

<?php

// Creating the widget
class wpb_widget extends WP_Widget {
	function __construct() {
		parent::__construct(
		// Base ID of your widget
			'wpb_widget',

			// Widget name will appear in UI
			__( 'WPBeginner Widget', 'textdomain' ),

			// Widget description
			[
				'description' => __( 'Sample widget based on WPBeginner Tutorial', 'textdomain' ),
			]
		);
	}

	// Creating widget front-end
	public function widget( $args, $instance ) {
		$title = apply_filters( 'widget_title', $instance['title'] );

		// before and after widget arguments are defined by themes
		echo $args['before_widget'];
		if ( ! empty( $title ) ) {
			echo $args['before_title'] . $title . $args['after_title'];
		}

		// This is where you run the code and display the output
		echo __( 'Hello, World!', 'textdomain' );
		echo $args['after_widget'];
	}

	// Widget Settings Form
	public function form( $instance ) {
		if ( isset( $instance['title'] ) ) {
			$title = $instance['title'];
		} else {
			$title = __( 'New title', 'textdomain' );
		}

		// Widget admin form
		?>
        <p>
            <label for="<?php echo $this->get_field_id( 'title' ); ?>">
				<?php _e( 'Title:', 'textdomain' ); ?>
            </label>
            <input
                    class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>"
                    name="<?php echo $this->get_field_name( 'title' ); ?>"
                    type="text"
                    value="<?php echo esc_attr( $title ); ?>"
            />
        </p>
		<?php
	}

	// Updating widget replacing old instances with new
	public function update( $new_instance, $old_instance ) {
		$instance          = array();
		$instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : '';

		return $instance;
	}

	// Class wpb_widget ends here
}

// Register and load the widget
function wpb_load_widget() {
	register_widget( 'wpb_widget' );
}

add_action( 'widgets_init', 'wpb_load_widget' );

A maneira mais fácil de adicionar código personalizado ao seu site WordPress é usando WPCode. É o melhor plugin de trechos de código que ajuda a gerenciar e inserir trechos de código no seu site sem o risco de quebrar nada.

Primeiro, você precisará instalar e ativar o plugin WPCode no seu site. Se precisar de ajuda, consulte nosso guia sobre como instalar um plugin do WordPress.

Após a ativação, você pode ir para Trechos de Código » + Adicionar Trecho no painel de administração do WordPress. A partir daqui, selecione a opção ‘Adicionar Seu Código Personalizado (Novo Trecho)’.

Adicionar novo snippet

Depois disso, você pode colar o código do widget personalizado na área de Visualização do Código.

Você também precisará clicar no menu suspenso ‘Tipo de Código’ e selecionar a opção ‘Trecho PHP’.

Insira o código do widget personalizado

Em seguida, você pode rolar para baixo e selecionar o método de Inserção para o seu código.

O WPCode permite que você escolha onde executar o código. Para este tutorial, você pode usar as opções padrão e executá-lo em todos os lugares.

Método de inserção no WPCode

Assim que isso for feito, você pode rolar de volta para o topo para Salvar o trecho.

Para ativar o trecho, basta clicar no alternador para ‘Ativo’.

Ative e salve o trecho no WPCode

Para saber mais, consulte nosso guia sobre como adicionar código personalizado ao seu site WordPress.

Após adicionar o código ao WordPress, você precisa acessar a página Aparência » Widgets no seu painel de administração do WordPress.

Em seguida, clique no ícone de adicionar bloco ‘Mais’, procure por ‘WPBeginner Widget’ e selecione o novo widget.

Adicionar widget WPBeginner

Este widget possui apenas um campo de formulário para preencher.

Você pode adicionar seu texto e clicar no botão ‘Atualizar’ para salvar suas alterações.

Adicionar texto ao widget e salvar

Agora, você pode visitar seu site WordPress para ver o widget personalizado em ação.

Aqui está um exemplo de como ele se parece em nosso site de demonstração.

Novo exemplo de widget personalizado

Adicionando Widget Personalizado no Editor Clássico do WordPress

Se você estiver usando o editor de widgets clássico para adicionar novos widgets ao seu site, o processo será semelhante.

Haverá um novo widget chamado ‘WPBeginner Widget’ na lista de widgets disponíveis. Você precisa arrastar e soltar este widget na sua barra lateral.

Em seguida, insira um título e clique em ‘Salvar’ para salvar as configurações do seu widget. 

Adicionar widget no editor clássico do WordPress

Seu novo widget personalizado agora estará ativo em seu site.

Agora, vamos estudar o código novamente.

Primeiro, registramos o ‘wpb_widget’ e carregamos nosso widget personalizado. Depois disso, definimos o que esse widget faz e como exibir o back-end do widget.

Por fim, definimos como lidar com as alterações feitas no widget.

Agora, há algumas coisas que você pode querer perguntar. Por exemplo, qual é o propósito do textdomain?

O WordPress usa o 'gettext' para lidar com tradução e localização. Este textdomain e _e dizem ao 'gettext' para tornar uma string disponível para tradução. Para saber mais, veja nosso guia sobre como encontrar temas do WordPress prontos para tradução.

Se você está criando um widget personalizado para o seu tema, então você pode substituir textdomain pelo text domain do seu tema.

Alternativamente, você pode usar um plugin de tradução do WordPress para traduzir o WordPress facilmente e criar um site WordPress multilíngue.

Bônus: Adicione Estilos Personalizados aos Seus Widgets do WordPress

Depois de criar um widget do WordPress, você também pode adicionar estilos personalizados a ele. Isso pode melhorar a aparência do seu site, manter a consistência e chamar a atenção para informações importantes.

Para fazer isso, visite a página Aparência » Widgets e adicione o widget que você deseja personalizar. Agora você verá algumas opções para alterar suas cores e tipografia no painel de blocos à direita.

As opções de estilo de widget padrão do WordPress

No entanto, se o widget não exibir essa opção, você poderá personalizá-lo adicionando classes CSS após expandir a aba 'Avançado'.

Agora, você pode adicionar CSS personalizado ao seu tema do WordPress direcionando essa classe CSS específica.

Adicionando classe CSS personalizada a widgets no Editor de Blocos

Para isso, acesse a página Aparência » Personalizar e mude para a aba CSS Adicional. Aqui, você verá uma prévia do seu site com uma caixa para adicionar suas regras CSS.

Agora você pode usar CSS personalizado para customizar a aparência do seu widget. Para mais detalhes, veja nosso tutorial sobre como adicionar estilos personalizados aos seus widgets do WordPress.

Adicionar regras CSS

Esperamos que este artigo tenha ajudado você a aprender como criar facilmente um widget personalizado do WordPress. Você também pode querer ver nosso guia sobre como desativar blocos de widgets no WordPress e nosso tutorial sobre como remover widgets inativos no WordPress.

Se você gostou deste artigo, por favor, inscreva-se em nosso Canal do YouTube para tutoriais em vídeo do WordPress. Você também pode nos encontrar no Twitter e no Facebook.

Aviso: Nosso conteúdo é apoiado pelos leitores. Isso significa que, se você clicar em alguns de nossos links, poderemos ganhar uma comissão. Veja como o WPBeginner é financiado, por que isso importa e como você pode nos apoiar. Aqui está nosso processo editorial.

O Kit de Ferramentas Definitivo para WordPress

Obtenha acesso GRATUITO ao nosso kit de ferramentas - uma coleção de produtos e recursos relacionados ao WordPress que todo profissional deve ter!

Interações do Leitor

30 CommentsLeave a Reply

  1. A string ‘wpb_text_domain’ não foi encontrada no código de exemplo. Imagino que o código de exemplo foi atualizado e a redação do artigo não?

    Além disso, para confirmar, ‘wpb_text_domain’ é realmente ‘web_widget_domain’ do código de exemplo?

    Agradeço antecipadamente por qualquer feedback.

  2. Obrigado pelo ótimo tutorial. Adicionei o código ao meu plugin de teste e funcionou perfeitamente como descrito – vejo o Widget na lista Aparência » Widgets e posso adicioná-lo à Barra Lateral.
    Mas não vejo o novo Widget na lista do editor de páginas. Estou perdendo algo, é necessário outro registro ou configuração?
    Obrigado novamente pela ajuda.

    • Dependeria de como você configurou o plugin. Para tê-lo em uma página, você pode procurar usar um shortcode para exibição no front-end ou procurar a API de opções se quisesse exibi-lo no lado do administrador de um site.

      Admin

  3. Como posso criar mais de 1 widget personalizado?
    E também, como posso definir outros campos como rádio, checkbox, dropdown, texto no widget?

    • Você precisaria substituir o wpb_widget pelo nome que deseja dar ao seu novo widget e, em seguida, o código dependeria do que você gostaria especificamente de adicionar. Se você der uma olhada no codex do WordPress, poderá ver os diferentes códigos disponíveis.

      Admin

  4. Olá!

    Atualmente, estou desenvolvendo um plugin e preciso criar um widget para permitir que o usuário adicione uma funcionalidade específica ao site dele.
    Copiei o código do seu widget para um arquivo e salvei o arquivo no diretório do meu plugin. Usei add_action e do_action no arquivo principal do meu plugin para carregá-lo, mas ainda não funciona. Você pode me ajudar, por favor?

    Obrigado!

    • Infelizmente, isso dependeria muito de como seu plugin está configurado, você pode querer garantir que ambas as seções deste código estejam sendo carregadas para que o widget seja adicionado e exibido.

      Admin

  5. Uma pergunta rápida, e se eu quiser criar widgets onde eu também possa colocar outros widgets? Como colunas bootstrap vazias de 6-3-3, por exemplo, e em cada coluna eu possa colocar widgets como imagem, texto, posts recentes etc.

    Existe um comando / palavra-chave para sinalizar que há espaço para outros widgets neste widget...

    porque estou meio confuso sobre meu próprio tema criado e como o WP está funcionando... você vê, sou um iniciante ^^

    Já coloquei informações gerais como título da página, criei áreas de widget no meu rodapé para que eu possa colocar menus, links relacionados etc. nele. Funcionou.

    Mas agora estou confuso sobre como posso realizar meu conteúdo no WordPress como o projetei antes. Talvez algumas palavras-chave sejam úteis para ler mais sobre elas.

  6. Como obter um campo de tipo de post personalizado do banco de dados do WP e usar um widget para exibir no front-end?

  7. não consigo adicionar dois widgets personalizados.. o segundo widget não está aparecendo....
    o que devo fazer???.. por favor, ajude

  8. Olá, gostaria de saber onde posso encontrar nos widgets disponíveis o “menu personalizado”. Ele não aparece e não consegui adicionar uma página ao rodapé através deste widget.

    Obrigado pela sua ajuda!!!!

  9. Olá, como eu mostraria um logotipo em vez de texto. Substituir a URL do logotipo pelo texto seria suficiente.
    Obrigado antecipadamente.

    • Por favor, consulte as configurações do seu tema ou visite a página Aparência » Personalizador na área de administração. Lá você encontrará uma opção para fazer o upload da imagem do seu logotipo.

      Admin

  10. O que veio primeiro, o widget ou o aplicativo?
    Um widget precisa ser registrado? Se sim, como, por favor?
    Como você protege melhor sua ideia de um widget ou aplicativo?
    Obrigado a todos

  11. Estas instruções funcionaram maravilhosamente para criar meu widget personalizado. No entanto, não consigo descobrir como mudar o tamanho da fonte para 60px. Consegui adicionar CSS às opções do tema Divi que centralizaram o texto e adicionaram uma borda de linha. Mas como mudo a estilização da fonte, por favor? Adicionar “font-size:60px” não funciona. Quero que a fonte seja grande, como uma linha de título que percorre a página. Obrigado.

  12. Olá! Espero que você possa me ajudar.

    Criei um tipo de postagem personalizado que exibe o horário de funcionamento de uma loja. Claro, você pode criar quantos horários de funcionamento quiser, mas minha necessidade é exibir um determinado horário de funcionamento na barra lateral do site.

    Para esse fim, criei um widget que percorre as postagens de horário de funcionamento exibindo apenas 1 (ou seja, a primeira, pois ordenei em ordem ASC). Esta é uma solução temporária, apenas para ver se o widget funciona e ele funciona, de fato.

    O que eu realmente quero fazer é mostrar no backend uma lista suspensa de todas as postagens pertencentes ao tipo de postagem “timetable” para que eu possa escolher a que preciso quando precisar e exibi-la no frontend. Como posso fazer isso?

    Obrigado se puder/quiser ajudar.

Deixe uma resposta

Obrigado por escolher deixar um comentário. Por favor, tenha em mente que todos os comentários são moderados de acordo com nossa política de comentários, e seu endereço de e-mail NÃO será publicado. Por favor, NÃO use palavras-chave no campo do nome. Vamos ter uma conversa pessoal e significativa.