Категория Ajax call

Я следую за этим сообщением, чтобы получить фильтр сообщений ajax через категорию для работы « Использование ajax для категорий и циклов wordpress ».

Я думаю, что я добавил все правильно, как показано в моем шаблоне, который у меня есть:

Элементы списка категорий: –

<ul id="category-menu"> <?php foreach ( $categories as $cat ) { ?> <li id="cat-<?php echo $cat->term_id; ?>"><a class="<?php echo $cat->slug; ?> ajax" onclick="cat_ajax_get('<?php echo $cat->term_id; ?>');" href="#"><?php echo $cat->name; ?></a></li> <?php } ?> </ul> 

Содержимое Divs (предназначено для содержимого ajax): –

 <div class="job-holder"> <div id="loading-animation" style="display: none;"><img src="<?php echo admin_url ( 'images/loading-publish.gif' ); ?>"/></div> <div id="category-post-content"></div> </div> 

Вызов Ajax: –

 <script> 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 = '<?php admin_url( 'admin-ajax.php' ); ?>'; 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; } }); } </script> 

Тогда в Functions.php у меня есть: –

 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-<?php echo $post->ID; ?> <?php post_class(); ?>"> <hi class="posttitle"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></hi> <div id="post-content"> <?php the_excerpt(); ?> </div> </div> <?php } wp_reset_postdata(); $response = ob_get_contents(); ob_end_clean(); echo $response; die(1); } 

Вызов ajax работает, но он снова втягивает всю страницу в div категории # category-post-content. Все, что я хочу, это сообщения, которые можно найти в выбранной категории.

Любая информация о том, как получить эту работу, будет очень благодарна.

Заранее спасибо J

Solutions Collecting From Web of "Категория Ajax call"

Вы можете попытаться использовать метод .children для фильтрации через ваш ответ – допустим, сообщения отправляются в контейнерах с определенным селектором на них – скажем, вы добавляете class="mypost" в div s, когда вы создаете ответ, -, то вы можете сделать что-то подобное в своем методе success :

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

Альтернативой было бы сделать цикл foreach через $post и построить массив $postElements , затем echo json_encode($postElements); в вашем файле функций PHP и проанализируйте его в методе success , создайте там вывод HTML.

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

Все зависит от того, как вы хотите подходить к этой проблеме, но лучше всего не возвращать HTML-код непосредственно в ответе сервера на запрос AJAX.