Chamada Ajax da categoria

Estou seguindo esta postagem para obter um filtro de postagem do ajax por categoria para trabalhar ” Usando o ajax em categorias e loops para wordpress “.

Eu acho que adicionei tudo corretamente da seguinte maneira no meu modelo que eu tenho:

Itens da minha lista de categorias: –

    <li id="cat-term_id; ?>"><a class="slug; ?> ajax" onclick="cat_ajax_get('term_id; ?>');" href="#">name; ?>

O conteúdo Divs (destinado ao conteúdo do ajax): –

 
<img src="https://wordpress.stackexchange.com//questions/165318/category-ajax-call/"/>

Ajax chamada: –

  function cat_ajax_get(catID) { jQuery("a.ajax").removeClass("current"); jQuery("a.ajax").addClass("current"); //adds class current to the category menu item being displayed so you can style it with css jQuery("#loading-animation-2").show(); var ajaxurl = ''; jQuery.ajax({ type: 'POST', url: ajaxurl, data: {"action": "load-filter", cat: catID }, success: function(response) { jQuery("#category-post-content").html(response); jQuery("#loading-animation").hide(); return false; } }); }  

Então em Functions.php eu tenho: –

 add_action( 'wp_ajax_nopriv_load-filter', 'prefix_load_cat_posts' ); add_action( 'wp_ajax_load-filter', 'prefix_load_cat_posts' ); function prefix_load_cat_posts () { $cat_id = $_POST[ 'cat' ]; $args = array ( 'cat' => $cat_id, 'posts_per_page' => 10, 'order' => 'DESC' ); $posts = get_posts( $args ); ob_start (); foreach ( $posts as $post ) { setup_postdata( $post ); ?> <div id="post-ID; ?> "> <a href="https://wordpress.stackexchange.com//questions/165318/category-ajax-call/"> 
<?php } wp_reset_postdata(); $response = ob_get_contents(); ob_end_clean(); echo $response; die(1); }

A chamada ajax funciona, mas ele puxa toda a página novamente para a divisão # category-post-content. Tudo o que eu quero são as postagens para puxar dentro da categoria selecionada.

Qualquer informação sobre como obter esse trabalho seria muito apreciada.

Agradecemos antecipadamente J

Solutions Collecting From Web of "Chamada Ajax da categoria"

Você poderia tentar usar o método .children para filtrar sua resposta – digamos que as postagens estão chegando em contêineres com um seletor particular nelas – digamos, você adiciona class="mypost" nas div s quando você cria a resposta -, então você pode fazer algo assim no seu método de success :

 // ... jQuery("#category-post-content").html(jQuery(response).children('.mypost')); // ... 

Uma alternativa seria fazer um loop foreach através do $post e criar uma matriz de $postElements , então echo json_encode($postElements); no seu arquivo de funções PHP e analise-o no método de success , crie o resultado HTML lá.

 // ... jQuery("#category-post-content").html(''); // Clean up old content for (i in response) { // Build the html string for each response[i] here var postElement = '
' + .........; // and then add it to your container jQuery("#category-post-content").append(postElement); } // ...

Tudo depende de como você deseja abordar esse problema, mas é uma questão de melhores práticas não devolver o código HTML diretamente na resposta do servidor a uma solicitação AJAX.