GIF89a;
Hoje fui olhar um dos meus servidores antigos e ao olhar os arquivos de log me deparei com as seguinte mensagens (*.access.log):

Vi também muitas requisições no *error.log, e então comecei a pesquisar sobre o assunto.
Pelo que parece, se trata de um ataque de força bruta (brute force) onde scripts tentam descobrir o usuario e senha através do arquivo xmlrpc.php do WordPress.
Vi algumas soluções e tal, mas a que me pareceu mais plausível, foi bloquear o acesso usando o firewall.
A solução apresentada abaixo foi usada e testada em um servidor rodando Ubuntu 16.04.1 LTS (xenial)
Descubra o ip que você quer bloquear e faça o seguinte comando:
sudo ufw insert 1 deny from xx.xx.xx.xx to any
em seguida, recarrege as regras usando:
sudo ufw reload
E pronto, aquele IP será bloqueado pelo firewall.
Caso queira remover a regra você pode proceder da seguinte forma:
Usando o comando sudo ufw status numbered você tera uma lista numerada das regras do firewall, em seguida remova a regra que desejar utilizando sudo ufw delete [numero da regra escolhida] e pra finalizar recarreque as regras com sudo ufw reload.
Lembrem-se de sempre verificar seus arquivos de log para ver se está tudo OK =) #ficaADica
Uma observação final que eu quero deixar é que as regras são aplicadas de acordo com sua ordem na lista, por isso a regra de bloquear o IP do spammer é colocada como primeira da lista.
Se você gostou desse post, compartilhe com seus amigos, ajude a espalhar conhecimento!
Não se esqueça de nos serguir nas redes sociais, por que você não pode ficar de fora!
Mas hoje quero deixar uma solução aqui para um problema muito recorrente que eu sempre tenho e hoje mais uma vez passei por isso, que são as permissoes da pasta de uploads do worpdress.
Geralmente a gente tenta de tudo e começa a ficar maluco, por exemplo, meu projeto ja estava com todas as permissões atribuidas e tudo mais e mesmo assim não encontrava a solução, até que me deparei com esta solução aqui:

Se as permissoes etiverem corretas e mesmo assim, você não está conseguindo resolver o problema, verifique em:
Configurações >> Midia >> Armazenar arquivos enviados nesta pasta e verifique se o caminho está correto.
Caso as permissoes estejam erradas, lembre-se das recomendações do wordpress:
755 for all folders and sub-folders.
644 for all files.
Esse script aqui pode solucionar o problema pra você:
Para usar:
1 – crie o arquivo: vim fix-wordpress-permissions.sh
2 – atribua a permissao de execução: chmod +x fix-wordpress-permissions.sh
3 – execute o arquivo: sh ./fix-wordpress-permissions.sh [PATH_TO_WORDPRESS_FOLDER]
Pronto!
Outra verificação direto com php puro que você pode fazer:
O código completo apenas é exibido no desktop, pois a leitura fica mais fácil, mas você pode acessar tambem pelo link direto do Gist.
Salve o arquivo no mesmo diretório que o wp-config.php e execute com: php is_writeable.php
Se você gostou desse post, compartilhe com seus amigos, ajude a espalhar conhecimento!
Não se esqueça de nos serguir nas redes sociais, por que você não pode ficar de fora!
Para que as datas dos posts sejam exibidas em portugues, você pode definir a lingua padrão do PHP e do WordPress para português, assim como o fuso-horario.
Em seu wp-config.php procure pela linha que tem define(‘WPLANG’, ”); e substitua por:
Nas configuraçoes do WordPress em Settings>>General (http://www.seusite.com.br/wp-admin/options-general.php) você pode alterar a forma de exibição das datas, para uma consulta sobre os parametros você pode visitar a documentação do php.
Essa dica tambem é valida para os projetos em php, mas para exibir a data usando as configurações de locais, você deve usar a função strftime
Espero que essa dica tenha sido útil.
Obrigado.
Essas imagens são salvas pelo wordrpess como anexos (attachments) ao post e podem ser chamadas usando a função get_posts.
Você pode criar no functions.php do seu tema, uma funçao simples, que retorna os anexos de um post, da seguinte forma:

Função para buscar anexos do post
Ai você pode simplemente chamar essa função em qualquer lugar do seu tema, passando apenas o id do post e o size (tamanho) da imagem.

Exemplo de uso da função de buscar anexos do post
Eu disponibilizei o código no gist para facilitar pra vocês.
O código completo apenas é exibido no desktop, pois a leitura fica mais fácil, mas você pode acessar tambem pelo link direto do Gist.
Espero que você tenha gostado desse post, usando esse pequeno snippet você consegue facilmente buscar as imagens do post.
Se você gostou desse post, compartilhe com seus amigos e ajude a espalhar o conhecimento!
Se ainda ficou com dúvidas, por favor deixe nos comentários.
Não se esqueça de nos seguir nas redes sociais, por que você não pode ficar de fora dos novos posts.

Hashtags
#anexos #wordpress #wp #attachment #buscarAnexoPost #imagens #featuredImage
Este post foi publicado em Dezembro de 2011 e atualizado em Janeiro de 2019.
Créditos da imagem: Foto por Brigitta Schneiter on Unsplash
Esses templates são facilmente identificados no tema com a ultilização do seguinte código no
início do arquivo:
[php]
<?php
/*
Template Name: Sobre a empresa
*/
?>
[/php]
Ao criar templates eles irão aparecer no admin ao adicionar nova página e então basta escolher o template desejado.
(Obs: Para que a escolha de templates seja visualidada no admin, pelo menos um arquivo do tema tem que ter o “Template Name” definido.
Caso não apareça, a documentação do wordpress sugere trocar de tema e depois voltar ao tema desejado.)
Uma outra parte interessante da hierarquia de templates, é que por padrao o wordress tem pré-definido, qual arquvio chamar.
A imagem a seguir mostra claramente como isso ocorre internamente no wordpress.
Para maiores referências, segue abaixo alguns links:
http://codex.wordpress.org/Template_Hierarchy
http://codex.wordpress.org/Theme_Development
http://upload.wikimedia.org/wikipedia/commons/3/3d/Wordpress_Template_Hierarchy.png
http://wpcandy.com/teaches/wordpress-template-hierarchy-diagram
Obrigado.
]]>
Quinta Digital – WordPress – Muito além do blog
Demorou muito, mas finalmente eu decidi fazer um post sobre o quinta digital.
No dia 06/10/2011 no Spetaculo – Casa De Artes, rolou o Quinta Digital, abordando o tema
“WordPress – Muito além do blog”.
Como palestrantes, tinhamos eu, Daniel Mariz e Mateus Neves e na platéia tinhamos mais de 50 pessoas.
Abordando temas mais técnicos em relação ao wordpress e tirando dúvidas da galera.
Todo o audio (podcast) do evento você pode conferir aqui http://t.co/wrTX1aEo
Temos tambem várias fotos no facebook do Quinta Digital http://www.facebook.com/quintadigital#!/media/set/?set=a.287864524565953.81647.156709971014743&type=1
Gostaria de agradecer ao @alexbolt pela oportunidade, ao @danielmariz e ao @mateuscneves por compartilharem o conhecimento e aos realizadores e patrocinadores por realizar oevento e a todos que compareceram e acompanharam online.
Muito obrigado.
]]>Mais um snipet para o wordpress.
Hoje vou mostrar como desabilitar a mensagem de update do dashboard do wordpress.

Para desabilitar essa mensagem vai depender da sua versão do wordpress. Basta colocar o codigo abaixo no functions.php do seu thema.
Versão 2.3 a 2.7:
[php]
add_action( ‘init’, create_function( ‘$a’, "remove_action( ‘init’, ‘wp_version_check’ );" ), 2 );
add_filter( ‘pre_option_update_core’, create_function( ‘$a’, "return null;" ) );
[/php]
Versão 2.8 a 3.0:
[php]
remove_action( ‘wp_version_check’, ‘wp_version_check’ );
remove_action( ‘admin_init’, ‘_maybe_update_core’ );
add_filter( ‘pre_transient_update_core’, create_function( ‘$a’, "return null;" ) );
[/php]
Versão 3.0:
[php]
add_filter( ‘pre_site_transient_update_core’, create_function( ‘$a’, "return null;" ) );
[/php]
obrigado.
]]>De acordo com a documentação do WordPress, ele recomenda que voce envie as requisições ajax para o arquivo admin-ajax.php, que fica em http://www.seusiteemwordpress.com.br/wp-admin/admin-ajax.php.
Nesse arquivo, será feita a requisição da função que você quer executar. Sendo assim, basta adicionar os hooks para que o wordpress chame a sua função quando requisitada.
Para isso, no arquivos functions.php do seu tema, adicione a sua função ajax e os hooks.
Por exemplo, adicionando hooks ajax para uma função que se chama doStuff()
[php]
function doStuff()
{
//doSomeStuff
die(); //Lembre sempre de finalizar a execução pois, caso contrario o wordpress retornará 0.
}
//Adiciona a funcao extra votos aos hooks ajax do WordPress.
add_action(‘wp_ajax_doStuff’, ‘doStuff’);
add_action(‘wp_ajax_nopriv_doStuff’, ‘doStuff’);
[/php]
São usados 2 hooks, o wp_ajax_FUNÇÃO e o wp_ajax_nopriv_FUNÇÃO onde o nopriv é para que a função possa ser executada por usuários não logados,
uma vez que a outra executa somente para usuarios logados.
Esse é o “pulo do gato”, pois alem disso você precisa apenas usar uma funçãozinha ajax do jquery.
Com o jquery faça:
[js]
$.ajax({
type: ‘POST’,
url: ‘/wp-admin/admin-ajax.php’,
data: ‘action=doStuff’,
success: function( response ){
alert(‘sucesso’);
}
});
[/js]
Lembrando que nos dados a serem passados, deve constar “action” e o nome da função que você deseja chamar.
Por hoje é só pessoal!
Valeu.
A situação é a seguinte, precisava fazer uma busca nos posts de uma categoria especifica e exibir somente 2 posts.
O problema é que usando essa “query_post()” customizada, a paginação nativa do WordPress não funcionava corretamente. Sempre apresentava o erro “Not Found“!
Pequisei por vários blogs, e encontrei umas respostas bacanas, como a do SytlizedWeb , porem mesmo com a solução apresentada, não consegui resolver meu problema.
A solução apresentada foi:

Correção da paginação do WordPress
O problema é que mesmo assim não funcionou, e depois de algum tempo eu fui descobrir que no Wp-Admin em : Settings >> Reading você tem a opção de “Blog pages show at most” que por padrão vem 10. Sendo assim você deve alterá-la para 1, pois aí o wordpress ira buscar apenas os posts que você solicitar no parametro “showposts“.
Espero que você tenha gostado desse post, como podem ver, o meu problema era apenas uma configuração do próprio admin do WordPress.
Se você gostou desse post, compartilhe com seus amigos e ajude a espalhar o conhecimento!
Se ainda ficou com dúvidas, por favor deixe nos comentários.
Não se esqueça de nos seguir nas redes sociais, por que você não pode ficar de fora dos novos posts.

Hashtags
#wordpress #paginacao #query_posts #query #pagination #loop #notfound #error #wp #404 #customizado #php
Este post foi escrito em maio de 2010 e atualizado em 2019.
Creditos da imagem por Aaron Burden on Unsplash