1
已解決。請參閱以下更新。添加無限滾動到Ajax加載(Wordpress)類別查詢
以下幾個不同的在線教程,我已經設法創建一個函數,以通過Ajax基於從下拉菜單中選擇的類別來修改我的WordPress帖子顯示。
我現在想添加無限滾動到Ajax加載的內容,我似乎無法弄清楚該怎麼做。
我將不勝感激關於如何進行的任何想法。提前致謝。
這裏是我的WordPress的功能:
function ajax_filter_posts_scripts() {
// Register and enqueue script
wp_register_script('afp_script', get_stylesheet_directory_uri() . '/js/ajax-filter-posts.js', false, null, false);
wp_enqueue_script('afp_script');
// localize script
wp_localize_script('afp_script', 'afp_vars', array(
'afp_nonce' => wp_create_nonce('afp_nonce'),
'afp_ajax_url' => admin_url('admin-ajax.php'),
));
}
add_action('wp_enqueue_scripts', 'ajax_filter_posts_scripts', 100);
function wp_infinitepaginate() {
// Verify nonce
$nonce = $_POST['afp_nonce'];
if (!isset($nonce) || !wp_verify_nonce($nonce, 'afp_nonce'))
die ('Permission denied');
if (is_front_page()) {
$paged = (get_query_var('page')) ? get_query_var('page') : 1;
} else {
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
}
$cat = $_POST['val'];
$args = array(
'category_name' => $cat,
'post_status' => 'publish',
'posts_per_page' => '4',
'paged' => $paged,
);
query_posts($args);
get_template_part('custom-loop');
exit;
}
add_action('wp_ajax_infinite_scroll', 'wp_infinitepaginate'); // for logged in user
add_action('wp_ajax_nopriv_infinite_scroll', 'wp_infinitepaginate'); // if user not logged in
下面是我用JS:
jQuery(document).ready(function($) {
jQuery("#la-chooser").change(function() {
loadArticlebyCat(this.value);
});
function loadArticlebyCat(cat){
data = {
action: 'infinite_scroll',
val: cat,
afp_nonce: afp_vars.afp_nonce,
};
jQuery.ajax({
url: afp_vars.afp_ajax_url,
type:'post',
data: data,
success: function(data, textStatus, XMLHttpRequest) {
jQuery("#tb-ajax-content").html(data);
console.log(textStatus);
console.log(XMLHttpRequest);
},
error: function(MLHttpRequest, textStatus, errorThrown) {
console.log(MLHttpRequest);
console.log(textStatus);
console.log(errorThrown);
jQuery("#tb-ajax-content").html('No posts found');
}
});
return false;
}
});
這裏的類別下拉式過濾器:
Filter by Category: <select id="la-chooser" style="padding:5px 10px;margin-left:5px;">
<option value="">All Categories</option>
<?php
$categories = get_categories();
foreach ($categories as $category) {
$option = '<option value="'.$category->category_nicename.'">';
$option .= $category->cat_name;
$option .= '</option>'."\n";
echo $option;
}
?>
</select>