Criando um site do zero com WordPress - #15 Busca com filtros no WordPress II
22/03/2018Nessa vídeo-aula vamos implementar o PHP que irá realizar o filtro de posts no banco de dados.
Filtrando posts no WordPress
Para realizarmos o filtro dos posts, vamos recorrer a tabela wp_term_relationships. Vamos verificar se existe aquele term_id cadastrado e se existir vamos pegar o object_id da tabela e associarmos a tabela wp_posts para chegarmos ao resultado final.
Para tanto, vamos criar um arquivo chamado controllerFiltro.php. No painel wp-admin, vamos criar uma página e associar ao controllerFiltro.
<?php /* Template Name: Controller Filtro */ ?>
<?php
$CampoBuscaFiltro='%'.$_POST['CampoBuscaFiltro'].'%';
$Categoria=$_POST['Categoria'];
$Resultado=$wpdb->get_results("select * from wp_term_relationships where term_taxonomy_id='$Categoria'");
foreach($Resultado as $Resultados){
$PostId=$Resultados->object_id;
$ResultadoPost=$wpdb->get_results("select * from wp_posts where (post_title like '$CampoBuscaFiltro' or post_content like '$CampoBuscaFiltro') and ID='$PostId'");
foreach($ResultadoPost as $post){
setup_postdata($post);
$MediumImage=wp_get_attachment_image_src(get_post_thumbnail_id($post->ID),'medium');
include(get_template_directory().'/includes/posts.php');
}
}
?>
Linkando o jQuery no WP
Vamos também linkar o nosso jQuery nativo e chamar nosso arquivo javascript.js.
#Arquivo functions.php
wp_enqueue_script("jquery");
#Arquivo footer.php
<script src="<?php echo get_template_directory_uri()."/javascript.min.js"; ?>"></script>
Criando a pasta includes
Para facilitar nosso reuso de código, vamos criar a pasta includes e criar os arquivos com a div posts e com a barra de filtro.
#Arquivo barraFiltro.php
<div class="BuscaFiltro">
<form name="FiltroBusca" id="FiltroBusca" action="<?php echo site_url().'/controllerFiltro'; ?>" method="post">
<input type="hidden" id="CampoBuscaFiltro" name="CampoBuscaFiltro" value="<?php echo $_GET['CampoBusca']; ?>">
<select name="Categoria" id="Categoria" required>
<option value="">Categoria</option>
<?php
$BFetch=$wpdb->get_results("select * from wp_terms where term_id >3");
foreach($BFetch as $Fetch){
echo "<option value='$Fetch->term_id'>$Fetch->name</option>";
}
?>
</select>
<input type="submit" value="Filtrar">
</form>
</div>
#Arquivo posts.php
<a href="<?php the_permalink(); ?>">
<div class="Post" style="background: url('<?php echo $MediumImage[0]; ?>') center center no-repeat;">
<div class="PostTitle"><?php the_title(); ?></div>
</div>
</a>
Na próxima aula implementaremos o nosso ajax.