Vamos listar nesse post uma série de truques para você usar no seu WordPress e conseguir melhorar ou criar novas possibilidades com essa ferramenta.

As dicas aqui apresentadas serão focadas em todos os níveis de aventureiros do WordPress. Lembre-se de manter backup do banco de dados e dos arquivos de seu tema antes de qualquer coisa!

Na administração

Com algumas modificações na administração do seu site (/wp-admin) é possível conseguir uma sensação de maior propriedade do CMS, o que é muito útil quando desenvolvemos sites em WordPress para clientes. Um exemplo básico é aplicando o logo dele na página de login e também na administração. Veja esse e outros exemplos abaixo.

Adicionando logo personalizado na página de login

Personalizando página de Login

Antes e depois da tela de login personalizada

Em seu functions cole o seguinte:

function login_logo() { ?>
 <style type="text/css">
 body.login div#login h1 a {
 background-image: url(<?php echo get_stylesheet_directory_uri(); ?>/images/login-logo.png);
 background-size: 234px 59px;
 width: 234px;
 }
 </style>
<?php }
add_action( 'login_enqueue_scripts', 'login_logo' );

Explicando: Estamos criando uma função login_logo() que é adicionada no action login_enqueue_scripts. Dentro dessa função adicionamos nossa imagens e alguns ajustes para ela, basicamente CSS. É importante setar o tamanho da imagem na propriedade background-size e width, pois por padrão o WordPress vem com 80px, que é a medida do logo W.

Adicionando logo personalizado na Administração

Logo personalizado na WP Admin Bar

Logo personalizado na WP Admin Bar

Adicione esse trecho no seu functions.php:

function admin_logo() { ?>
 <style type="text/css">
 #wp-admin-bar-wp-logo {
 background-image: url(<?php echo get_stylesheet_directory_uri(); ?>/images/admin-logo.png) !important;
 }
 #wpadminbar #wp-admin-bar-wp-logo > .ab-item .ab-icon:before {
 content: "" !important;
 }
 #wpadminbar .ab-top-menu > li.hover > .ab-item, #wpadminbar .ab-top-menu > li:hover > .ab-item, #wpadminbar .ab-top-menu > li > .ab-item:focus, #wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus {
 background-color: transparent !important;
 }
 </style>
<?php }
add_action( 'admin_head', 'admin_logo' );

Explicando: Esse trecho é um pouco mais longo mas é basicamente CSS também. O WordPress usa como logo um ícone da biblioteca Dashicons, que é uma fonte web de ícones e que o WordPress incorporou ao seu código desde a versão 3.8. Mas em nossa função adicionamos um png como logo.

Alterando a frase do rodapé da Administração

Alterando frase do rodapé na Administração do WordPress

Alterando frase do rodapé na Administração do WordPress

Adicione o seguinte no seu functions.php

function admin_footer() {
 echo 'Criado com <a href="http://www.wordpress.org" target="_blank">WordPress</a> | Design por <a href="http://www.seusite.com.br" target="_blank">Nome do seu Site</a>';
}
add_filter('admin_footer_text', 'admin_footer');
Explicando: Essa função imprime apenas uma frase, que você pode personalizar com o que quiser, adicionando links por exemplo. E ao final adicionamos um filter no admin_footer_text para rodar nossa função.

Algumas funções e utilidades pouco exploradas

O codex do WordPress é a documentação oficial de todas suas funções. É o local onde você pode consultar o que cada uma delas faz e como pode ser usada.

Vamos listar aqui apenas algumas dessas funções que são pouco conhecidas ou raramente são citadas em posts sobre WordPress.

Algumas dessas são indispensáveis aos desenvolvedores de temas ou para aqueles que pretendem dar um passo a mais com seu site.

wp_schedule_event()

Esse é um hook que executa eventos em seu WordPress em determinado intervalo de tempo, e tem um funcionamento muito parecido com o cron. A diferença é que esse somente será disparado quando seu site for visitado pela primeira vez após o momento que determinou.

Eu usei essa função em uma agenda que criei com Custom Post Type. E então configurei o hook wp_schedule_event() para rodar uma vez por dia, alterando os eventos dessa agenda com data inferior ao dia atual, colocando neles um status de “Evento passado”. Com isso deixei a agenda mais automatizada e fazendo com que ela diferencie eventos passados de eventos futuros.

Outra possibilidade de uso desse hook seria, por exemplo, definirmos um intervalo para o WordPress fazer backup dos seus dados, limpar o cache ou mesmo divulgar uma promoção relâmpago.

sanitize_title()

Essa função remove acentos, caracteres especiais e espaços de uma string. Muito útil para a criação de URLs amigáveis. Veja um exemplo:

$title = "Meu exemplo de String";
 $url = sanitize_title( $title ); /* Retorna meu-exemplo-de-string */

wp_head() e wp_footet()

Essas funções são actions, que podem ser usadas para alocar determinados hooks. Esses dois em específico são padrões do WordPress. Ao desenvolver um tema, o wp_head() deve ser criado antes do fechamento da tag HTML </head> – é aí onde o próprio WordPress, plugins e temas colocam scripts, arquivos de CSS e outros itens que precisam estar dentro do <head>. Já o wp_footer() deve ser criado antes do fechamento da tag HTML </body>. Muitos plugins usam esse action para colocar scripts também, mas são scripts que podem rodar de forma secundária. Por exemplo, os plugins de Google Analytics aplicam aqui o código de rastreamento.

wp_insert_post()

Essa função é responsável por criar um novo post. Ela é extremamente útil e dever ser usada com cuidado, sempre envolvendo-a em uma condicional para que ela não se repita infinitamente, criando assim inúmeros posts repetidos e até mesmo travando seu WordPress.

Eu explorei muito dessa função em uma migração que precisei fazer de um banco MySQL para WordPress. Essa função recebe vários argumentos, inclusive o tipo de post que você deseja criar. Com isso eu fiz um loop que buscava os dados no MySQL e salvava cada linha como um novo post no WordPress. Veja um breve exemplo:

$insert_post = array(
 'post_title' => 'Título do meu post',
 'post_content' => 'Este é o content do meu post.',
 'post_status' => 'publish',
 'post_author' => 1,
 'post_category' => array(8,39)
);
wp_insert_post( $insert_post );

Esse exemplo está no codex, ele basicamente cria um post, definindo título, content, status, autor e categorias. Veja um exemplo mais prático, supondo que na variável $dados estão as informações com que se deseja criar os posts:

foreach ( $dados as $d ) {
  $args = array(
   'post_content' => $d->content,
   'post_name' => $d->slug,
   'post_title' => $d->title,
   'post_status' => 'draft',
   'post_type' => 'artigos',
   'post_author' => 1,
 );
 wp_insert_post( $args );
}

Aqui estamos rodando um loop no array $dados, e para cada item desse array ele vai criar um post com os argumentos que passamos. Observe que coloquei o post (que criei como Artigos) em rascunho (draft). Assim, o editor do site pode fazer uma revisão antes de publicá-lo.

antispambot()

Mais uma função nativa e útil do WordPress. Essa função faz uma criptografia do valor passado a ela, útil para quando você precisar exibir um endereço de e-mail. Isso evita que os robôs que procuram e-mails pela internet localizem esse e-mail e disparem spams para o mesmo. Veja como usar:

<?php
  echo antispambot( '[email protected]' );
?>

PHP para WordPress

Mesmo sem conhecer PHP é possível ir bem longe com o WordPress. Mas com algum mínimo conhecimento dessa linguagem você pode multiplicar inúmeras vezes esse potencial. Vamos então conhecer alguns macetes de PHP:

if elseif else

Essa é uma estrutura muito fundamental e que deve estar na ponta da língua (ou seria dos dedos?) sempre. Com ela é possível fazer comparações e para cada uma delas pode-se aplicar um comportamento. Vamos a um exemplo:

if ( is_page('Contato') ) {
 get_header('contato');
} elseif ( is_page('Equipe') ) {
 get_header('equipe');
} else {
 get_header();
}

No exemplo acima estou fazendo as seguintes comparações: Se a página atual for Contato, inclua o Header Contato (header-contato.php). Se for Equipe, inclua o Header Equipe (header-equipe.php). E se não for nenhum desses casos, adicione o Header padrão (header.php).

Usei aqui uma tag condicional nativa do WordPress, que é a is_page(). Ela por si só confere a página que está sendo visitada.

Com isso você consegue comparar a página em que está e então criar cabeçalhos distintos para o seu site. Você pode comparar valores de variáveis e o que mais precisar.

foreach

O foreach é uma das formas que o PHP oferece para criar loops (laços). Ele literalmente fica dando voltas até não ter mais o que repetir. Vamos a um exemplo básico:

$palavras = array("Dicionário", "Caminhão", "Dinossauro", "Ciências", "Programação");
foreach ( $palavras as $palavra ) {
 echo $palavra . "<br>";
}

Temos um array com várias palavras. Colocando isso em um foreach ele vai nos imprimir cada uma das posições do array, ou seja, nossas palavras.

Isso pode ser útil em muitos momentos quando trabalhamos com programação. No WordPress mesmo, podemos ter um campo que guarde o ID dos posts mais visitados. Para imprimir esses posts, podemos rodar um foreach e pegando esses posts pelo seu ID.

explode

Com essa função do PHP você pode dividir uma string em várias partes, passando um delimitador em comum, veja o exemplo:

$string = "piece1 piece2 piece3 piece4 piece5 piece6";
$parts = explode(" ", $string);
echo $parts[0]; //piece1
echo $parts[1]; //piece2

Aqui o delimitador escolhido é o espaço ” “. Você pode usar vírgulas, ponto e vírgulas ou o que for necessário, e então cada parte gerada pelo explode será guardada em uma variável seguida de um índice numérico. Lembrando que o PHP inicia a contagem dos arrays em [0], por isso para mostrar o primeiro valor usamos a variável $parts[0].

Conclusão

Além dessas novas dicas, já publicamos aqui no BlogLite uma série de truques para aplicar no seu functions.php e também dicas importantes de segurança. Além dos posts para elevar o nível do seu WordPress com Widgets e Shortcodes.

O post de hoje foi um pouco mais técnico. Não tenha medo de testar, aprender e conhecer como cada uma dessas coisas funcionam! Se ficou com alguma dúvida ou deseja contribuir para aumentar essa lista de dicas, comente abaixo.