Last active
August 29, 2015 14:07
-
-
Save luancmaia/d3168bc7d875041ee5d4 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Requisição Ajax | |
Parametros : | |
'post_type' => 'Nome do Post Type Usado', | |
'type' => 'search' para buscas ou 'load' para carregar mais conteudos, | |
'param' => em 'search' o valor buscado, em 'load' um array com os ids que não devem ser buscados, | |
'img_field' => caso queira que retorne imagem passe o nome do campo do acf, | |
'quantity' => quantidade de posts que vai buscar | |
OBS: O Modelo abaixo está com os parametros preenchidos só para melhor entendimento. | |
$.ajax({ | |
'url': window.ajaxurl, | |
'type': 'POST', | |
'dataType': 'json', | |
'data': { | |
'action' : 'ft_global_ajax', | |
'post_type' : 'post', | |
'type' : 'search', | |
'param': 'lorem ipsum', | |
'img_field' : 'post-imagem', | |
'quantity': '4', | |
}, | |
'success': function( response ) { | |
if ( response !== 0 ) { | |
//Foreach para varrer o array de resultados e poder manipular cada um deles. | |
$.each( response.objects, function( i, object ){ | |
console.log( object ); | |
// Aqui ficaria o HTML e o append em algum lugar da pagina. | |
//Ex: var html = '<h1>' + object.title + '</h1>'; | |
// html .= '<p>' + object.content + '</p>'; | |
// $('body').append(html); | |
} ); | |
} | |
}, | |
'beforeSend': function( data ) { | |
// Faça alguma coisa antes de rodar o ajax | |
// Ex: Dar show no Loading | |
}, | |
'complete': function( data ) { | |
// Faça alguma coisa quando completar o ajax | |
// Ex: Dar hide no Loading | |
} | |
}) | |
//Tratamento de dados PHP | |
add_action( 'wp_ajax_ft_global_ajax', 'ft_global_ajax' ); | |
add_action( 'wp_ajax_nopriv_ft_global_ajax', 'ft_global_ajax' ); | |
function ft_global_ajax() { | |
$request = (object) $_POST; | |
$response = (object) array(); | |
$response->status = false; | |
$response->message = 'Houve alguma falha!'; | |
//Verifica se tem algum parametro vazio, se sim, retorna a função. | |
foreach ( $request as $param ) { | |
if ( empty( $param ) ) { | |
return json_encode( $response ); | |
} | |
} | |
//Verifica se o tipo passado é igual a search ou load, caso seja diferente, retorna a função. | |
if ( $request->type != 'search' && $request->type != 'load' ) { | |
return json_encode( $response ); | |
} | |
//Lógica caso o tipo seja 'search' | |
if ( $request->type == 'search' ) { | |
wp_reset_query(); | |
$args = array( | |
'post_type' => $request->post_type, | |
'posts_per_page' => $request->quantity, | |
); | |
$q = new WP_Query( $args ); | |
if ( $q->have_posts() ) { | |
$i = 0; | |
while ( $q->have_posts() ) { | |
$q->the_post(); | |
if ( stripos( get_the_content(), $request->param ) !== false || stripos( get_the_title(), $request->param ) !== false ) { | |
$response->objects[$i]['id'] = get_the_ID(); | |
$response->objects[$i]['title'] = get_the_title(); | |
$response->objects[$i]['content'] = get_the_content(); | |
$response->objects[$i]['date'] = get_the_date(); | |
$response->objects[$i]['category'] = get_the_category(); | |
$response->objects[$i]['post_parent'] = $post->post_parent; | |
$response->objects[$i]['permalink'] = get_permalink(); | |
$image = youtube_video_image( get_field( $request->img_field ) ); | |
$response->objects[$i]['image'] = $image; | |
$response->status = true; | |
$response->message = 'Resultados encontrados!'; | |
$i++; | |
} | |
} | |
} | |
} | |
//Lógica caso o tipo seja 'load' | |
if ( $request->type == 'load' ) { | |
wp_reset_query(); | |
$args = array( | |
'post_type' => $request->post_type, | |
'posts_per_page' => $request->quantity, | |
'post__not_in' => $request->param, | |
); | |
$q = new WP_Query( $args ); | |
if ( $q->have_posts() ) { | |
$i = 0; | |
while ( $q->have_posts() ) { | |
$q->the_post(); | |
$response->objects[$i]['id'] = get_the_ID(); | |
$response->objects[$i]['title'] = get_the_title(); | |
$response->objects[$i]['content'] = get_the_content(); | |
$response->objects[$i]['date'] = get_the_date(); | |
$response->objects[$i]['category'] = get_the_category(); | |
$response->objects[$i]['post_parent'] = $post->post_parent; | |
$response->objects[$i]['permalink'] = get_permalink(); | |
$image = youtube_video_image( get_field( $request->img_field ) ); | |
$response->objects[$i]['image'] = $image; | |
$response->status = true; | |
$response->message = 'Resultados encontrados!'; | |
$i++; | |
} | |
} | |
} | |
exit( json_encode( $response ) ); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment