Tornando o Plugin Multilíngue
Quando desenvolvemos um plugin para WordPress, é fundamental garantir que ele possa ser traduzido para diferentes idiomas. Isso permite que um público mais amplo possa utilizá-lo, melhorando sua acessibilidade global.
Uso das Funções __()
e _e()
O WordPress fornece duas funções principais para facilitar a tradução de textos dentro do código do plugin:
__()
– Retorna o texto traduzido sem imprimir na tela._e()
– Traduz e imprime o texto diretamente.
Exemplo de uso dentro do nosso plugin:
function meu_plugin_mensagem_rodape() {
echo '<p style="text-align: center;">' . __('Obrigado por visitar nosso site!', 'meu-primeiro-plugin') . '</p>';
}
Para preparar o plugin para tradução, precisamos adicionar a função load_plugin_textdomain()
dentro do arquivo principal do plugin:
function meu_plugin_carregar_textos() {
load_plugin_textdomain('meu-primeiro-plugin', false, dirname(plugin_basename(__FILE__)) . '/languages');
}
add_action('plugins_loaded', 'meu_plugin_carregar_textos');
Agora, basta criar um arquivo .pot
com as traduções e disponibilizá-lo na pasta languages
dentro do diretório do plugin.
Práticas de Segurança no Desenvolvimento de Plugins
A segurança é um fator essencial ao desenvolver plugins para WordPress. Vamos abordar algumas das melhores práticas para proteger seu plugin contra vulnerabilidades.
1. Protegendo Contra Acesso Direto
Inclua a seguinte verificação no início do seu arquivo principal para evitar que ele seja acessado diretamente:
if (!defined('ABSPATH')) {
exit; // Sai do script se for acessado diretamente
}
2. Sanitização e Validação de Dados
Sempre limpe e valide os dados recebidos antes de usá-los no banco de dados:
$nome = sanitize_text_field($_POST['nome']);
$email = sanitize_email($_POST['email']);
Isso impede que códigos maliciosos sejam inseridos na base de dados.
3. Uso de prepare()
ao Executar Querys no Banco de Dados
Nunca use querys SQL diretas com dados inseridos pelo usuário. Use prepare()
para evitar SQL Injection:
$dados = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->prefix}meu_plugin_dados WHERE email = %s", $email));
4. Verificação de Nonces para Evitar CSRF
Ao criar formulários administrativos, use um nonce para garantir que a requisição venha de uma fonte confiável:
wp_nonce_field('meu_plugin_nonce_action', 'meu_plugin_nonce');
E ao processar os dados do formulário:
if (!isset($_POST['meu_plugin_nonce']) || !wp_verify_nonce($_POST['meu_plugin_nonce'], 'meu_plugin_nonce_action')) {
die('Ação não permitida.');
}
Lidando com Permissões de Usuários
Controlar quem pode acessar e modificar dados dentro do plugin é essencial para a segurança. O WordPress possui um sistema robusto de permissões baseado em “capabilities” e “roles”.
1. Verificando Permissão ao Criar Menus de Admin
Ao adicionar um menu no painel administrativo, certifique-se de que apenas usuários com permissão adequada possam acessá-lo:
add_menu_page(
'Configurações do Meu Plugin',
'Meu Plugin',
'manage_options',
'meu-plugin-configuracoes',
'meu_plugin_pagina_configuracao_callback',
'dashicons-admin-generic',
20
);
A capability
manage_options
garante que apenas administradores tenham acesso.
2. Restringindo Ações com current_user_can()
Antes de executar uma ação sensível, verifique se o usuário tem permissão:
if (!current_user_can('manage_options')) {
wp_die(__('Você não tem permissão para acessar esta página.', 'meu-primeiro-plugin'));
}
Conclusão
Internacionalização e segurança são aspectos fundamentais no desenvolvimento de plugins para WordPress. Ao tornar seu plugin multilíngue e aplicar boas práticas de segurança, você garante que ele seja acessível e confiável para uma ampla gama de usuários.