Plugin WordPress – Doctrine

Como sabemos existe uma gama enorme de plugins para WordPress, alguns muito bons outros nem tanto, no dia-a-dia devido as necessidades especificas de cada cliente acabo criando alguns específicos.

Recentemente ao desenvolver um site com a plataforma WordPress totalmente customizada, com queries fora do padrão e uma serie de tabelas novas, encontrei um plugin que ajudou 100% o desenvolvimento – Doctrine ORM Integration.

Doctrine ORM (Object relational mapper)

Doctrine é um projeto focado principalmente em funcionalidades de persistência.
ORM (Object relational mapper) é a camada de abstração de banco de dados.

Então, se juntar as duas coisas temos, uma biblioteca para lidar com persistência e outra para mapeamento de tabelas relacionais. Chegando a este ponto temos apenas um pequeno empecilho, as tabelas do wordpress não são relacionais, toda a relação é feita em código, então não teremos 100% dessa ferramenta dentro do wordpress comparando com uma plataforma que utiliza uma base dados relacional.

Agora o passo a passo para utilizar a ferramenta:

Primeira coisa é fazer o download do plugin e instalar o mesmo no seu wordpress – Download do Plugin. Após a instalação verifique na área de configurações do seu blog o novo link

Doctrine ORM Integration – clicando nele temos a página de configuração

Only In Admin Area – Aqui você habilita o uso do plugin apenas dentro da área do Admin do site deixe essa opção desmarcada para que você possa utilizar em todo o site.

Reset Model’s Folder – Aqui você gera todo o mapeamento do banco novamente. Tome cuidado ao executar este comando porque se já tiver customizado algum model ele é substituído por um default sem a sua customização.

Veja um exemplo de uso com a seguinte situação:

“Gostaria de mostrar os últimos comentários do site independente do post.”

Para essa ocasião procure dentro da pasta /wp-content/plug-ins/doctrine/models um arquivo chamado WpComments.php (importante: o nome dos arquivos desta página pode variar de acordo com a nomenclatura das tabelas do seu site) e crie o seguinte método:

1
2
3
4
5
6
7
8
public static function findAll(){
	 return Doctrine_Query::create()
		  ->from('WpComments wpc')
		  ->addWhere('wpc.comment_approved = 1')
		  ->orderby('wpc.comment_date DESC')
		  ->limit(5)
		  ->execute();
}

O que ele faz basicamente é buscar os 5 últimos comentários aprovados no site.

E no local onde deseja exibir estes comentários basta fazer o seguinte:

1
2
3
4
5
$listComments = WpComments::findAll();
foreach($listComments as $comment) :
	 echo utf8_encode($comment->comment_content);
	 echo utf8_encode($comment->comment_author)." - ".date('d-m-Y', strtotime($comment->comment_date));
 endforeach;

Simples assim!

Que fique claro que este foi um exemplo especifico que fiz em um site de um cliente, as formas de uso vem com a necessidade de cada um!

Qualquer coisa deixe um comentário com suas dúvidas!

Para saber mais sobre Doctrine acesse o site do projeto – Aqui

Continue reading

, , , , ,

Ajax e WordPress

Muita gente gosta de ver mágicas no site, informações sendo carregadas sem sair da página, atualizações em tempo real praticamente um canal aberto entre a telinha bonita do site e o servidor. Existem muitos que defendem o uso de Ajax nas aplicações, outros são contra, mas isso é outra discussão. O que vamos ver é uma forma bem simples e agradável de utilizar Ajax no WordPress.

Para quem já trabalha com wordpress sabe que o mesmo tem uma estrutura hierárquica de arquivos, e sabe que uma página que esteja fora dessa hierarquia para conseguir acessar os conteúdos e variáveis do wordpress deve ser um custom page. Quando se trabalha com Ajax normalmente você cria uma custom page no wordpress e na chamada ajax você utiliza a url da página criada.

Já utilizei isso varias vezes e todas funcionaram muito bem até agora, a única coisa ruim é que fica uma serie de páginas criadas dentro do WP. E caso o seu cliente altere alguma coisa poderá ter problemas com o funcionamento das chamadas Ajax.

Recentemente encontrei uma solução que facilita bastante o uso de Ajax no wordpress e sem ter que criar demasiadas páginas. Veja como é simples:

- No arquivo functions.php do seu tema crie uma função e faça nela a sua lógica ex:

/* Listar os 10 últimos posts */
function lastPostsAjax(){
	//WP_QUery
	$recordset = new WP_Query(
		array(
			'posts_per_page' => 10,
			'post_type' => 'post',
			'category_name' => 'programacao'
		)
	);
 
	//Array que terá os posts
	$postsArray = array();
 
	//Loop
	if($recordset->have_posts()) :
		foreach($recordset->posts as $post_index => $post_value) :
			$postsArray[] = array(
				'post_id' => $post_value->ID,
				'post_title' => $post_value->post_title,
				'post_link' => $post_value->guid,
				'post_excerpt' => $post_value->post_excerpt
			);
		endforeach;
	endif;
 
	// Imprimindo um json para o Ajax
	echo json_encode(array(
		'posts' => $postsArray
	));
}
 
//Aqui adiciono as funções para os hooks do wordpress
add_action('wp_ajax_lastPostsAjax', 'lastPostsAjax');
add_action('wp_ajax_nopriv_lastPostsAjax', 'lastPostsAjax');

Perceba que é um código simples que busca 10 posts e popula um array, o mesmo é impresso coma função json_encode (transforma o array em um objeto json).

Observe as linhas 35 e 36 que adicionamos funções para os hooks do wordpress, elas serão uteis para que nosso Ajax ao invés de chamar uma url de uma página chame esse método que está functions.php.

Vamos ao Ajax agora, eu vou utilizar o $.ajax do jQuery por que é mais prático e rápido. Então no seu arquivo .js use o seguinte:

$(document).ready(function() {
	$.ajax({
		type: 'POST',
		url: '/wp-admin/admin-ajax.php',
		dataType: 'JSON',
		data: "action=lastPostsAjax",
		success: function(dataRetorno){
			//Aqui o código para tratar o json
		},
		error: function(jqXHR, textStatus, errorThrown){
			alert(textStatus);
		}
	});
});

Observem que na linha 4 deste código a url que o ajax utiliza é a ‘wp-admin/Admin-ajax.php’ é um arquivo do WP que trata a chamada ajax e direciona para o método correto no functions. Perceba também que no parâmetro data passamos “action=lastPostsAjax” esse parâmetro é obrigatório para que o wordpress através daqueles add_action que colocamos no functions saiba para qual método você está chamando.

Dessa forma podemos criar métodos que retornam informações para chamadas ajax sem o uso de custom page centralizando tudo em um único lugar!

Continue reading

, ,

Inauguração

Há muito que quero começar a escrever um blog, sempre muitas ideias de inicio muito tempo para filtra-las no final das contas nada sai. Hoje, porém é um dia especial, pois resolvi criar este blog do nada, já com um ou dois, pois prontos para ser publicados logo mais.

Bom vamos ver o que dá!

Continue reading