Categorias
Web WordPress

Trabalhando com shortcodes no WordPress

Vamos falar sobre shortcode nesse post, mas antes vou contar uma história para vocês. Semana passada me deparei com um problemas, daqueles que você só enxerga em produção. Desenvolvendo um tema para um freela, tudo ok no ambiente de teste. Quando o site foi para produção nenhum vídeo carregava.

Entrei para verificar o conteúdo, nele tinha uma tag video.

quando bati o olho pensei duas coisas ou é um shortcode antigo ou é algo do jetpack. Primeiro passo, verificar os plugins se estão ativos, em seguida atualizar o WP, por fim atualizar o Jetpack. Resultado nada!

Você faz aquele exercício o que foi que eu fiz antes “desabilitei o tema anterior” quando fui olhar o código do tema antigo estava lá o shortcode video. Shortcode é um recurso muito útil para que está criando um tema ou plugin. Mas se está criando um short code para o tema ele deve ser totalmente vinculado ao tema, ou seja, um recurso que só faça sentido existir naquele tema ou plugin.

Exemplo, a tag vídeo estava presente em todos os posts mudou o tema, quebrou todo o site. Para alguns recursos hoje em dia não faz muito sentido, um caso é o youtube basta colar o link da url no editor visual que o WP já cria um embed. Optar por um recurso do WP independente do tem ou plugin a funcionalidade vai estar lá.

Ok, vamos para a parte legal. Como eu crio um shortcode?

Primeiro temos que adicionar em nosso function.php o seguinte hook:

add_shortcode( $tag , $func );

Ele espera dois parâmetros, nome da tag e a função que ele irá chamar na prática ele vai ficar da seguinte forma:

<?php  

function say_hello($atts) {
	return '<p> Olá meu nome é'.$atts['nome'].'</p> ';
}

add_shortcode('hello', 'say_hello');
?>

Exemplo acima criamos o shortcode “hello” quando a shortcode api encontrar a tag [hello] dentro do meu post saberá que tem que chamar a função say_hello, basicamente ela cria um html como o texto olá meu nome é “x”. Notem que concateno com um valor que passamos como parâmetro na função.

Ela espera que passamos um atributo nome, por exemplo, [hello nome="ze"]. Mas se caso o usuário não passar o valor o que vai acontecer ? ZICA!

Mas podemos definir um atributo default para resolver este problema:

<?php
function say_hello($atts) {
	$atts = shortcode_atts( array(
				'nome' => 'zezinho'
			), $atts, 'hello' );
	return '<p> Olá meu nome é'.$atts['nome'].'</p> ';
}

add_shortcode('hello', 'say_hello');
?>

No caso usei um exemplo simples só montar um texto p. Mas poderíamos montar um componente de share, um componente de sugestão de produtos, o componente de publicidade. Lembrando que o recurso fica atrelado ao tema ou plugin, quer saber mais? Também adicionei uma versão em português no codex do WordPress: https://codex.wordpress.org/pt-br:Function_Reference/add_shortcode

Categorias
WordPress

Configuração e opções extras com wp-config.php

Além das informações de conexão com o banco podemos definir algumas configurações do WordPress pelo wp-config.php nesse post eu vou listar algumas configurações que podemos definir, mas uma dica use com moderação.

table_prefix

Para não ter conflito com outras tabelas que já existem e uma boa prática de segurança não utilizar o prefixo padrão mudamos o prefixo das tabelas do banco do wordpress. Para fazer essa mudança, no caso dentro do arquivo wp-config configuramos apenas atribuindo um valor a variável $table_prefix.

$table_prefix  = 'exemplo_';

Faça a definição do prefixo da tabela de preferência na hora da instalação para evitar de duplicar as tabelas.

URL do WordPress

Caso queira sobrescrever a informação “siteurl” que está na tabela “wp_options”, sem alterar a base de dados simplesmente ele passa a ler as informações do “wp-config.php”. Essa opção desativa a opção de editar a url na tela de configurações no painel do wordpress, como podemos ver na imagem abaixo:

Dois pontos importantes um esse configuração deve ser definida uma única vez caso fique alterando esse comando causa conflito no admin e outro ponto é necessário incluir o “http://” no início da URL como no exemplo a seguir:

define('WP_SITEURL', 'http://fellyph.com.br/blog/');

Renomeando a pasta wp-content

Essa recurso é permitido a partir da versão 2.6 do wordpress, nesse caso apenas é possível renomear a pasta wp-content, mas é preciso redefinir o caminho da pasta plugins para evitar conflito. No exemplo abaixo vou renomear a pasta ‘wp-content’ para ‘conteudo’:

define('WP_CONTENT_FOLDERNAME', 'conteudo');
define('WP_CONTENT_DIR', ABSPATH . WP_CONTENT_FOLDERNAME );
define('WP_CONTENT_URL', 'http://seusite.com/'.WP_CONTENT_FOLDERNAME);
define('WP_PLUGIN_DIR', WP_CONTENT_DIR .'/plugins' );
define('WP_PLUGIN_URL', WP_CONTENT_URL.'/plugins');

Essas definições acima devem ser feitas antes da linha “require_once(ABSPATH . ‘wp-settings.php’);”

Modificar Intervalo AutoSave

Essa opção interfere no intervalo do autosave do editor de texto tanto para o editor de posts quanto o editor de páginas. Por padrão o editor usa um intervalo de 60 segundos para cada save. Essa valor pode ser alterado para um valor maior ou menor. Só adicionar a seguinte linha e passar o valor em segundos :

   define('AUTOSAVE_INTERVAL', 100 );

Desativando o recurso de revisão

O WordPress guar um histórico das alterações que foram realizadas no post ou página para desativar essa recurso use a seguinte função :

  define ('WP_POST_REVISIONS', false);

Definindo o número máximo de revisões

Também é possível definir o número máximo de revisões que o wordpress vai armazenar.

define('WP_POST_REVISIONS', 3);

Ativar versão Debug

É possível exibir erros e warnings do WordPress ativando o versão Debug, essa opção foi habilitada na versão 2.3.1 do wordpress

define('WP_DEBUG', true);