मैं अपने वर्डप्रेस श्रेणियों पृष्ठ है, जहाँ अगर वे ग्राफिक पर क्लिक करें, फिर अधिक पदों लोड किए गए हैं पर कुछ कोड है - इस मामले में 15Wordpress/PHP/अजाक्स लोड अधिक पोस्ट
यह पहली बार अच्छा काम करता है कि यह दबाया जाता है। हालांकि, इसे फिर से दबाए जाने के बाद, यह अगले पदों (यानी तीसरा) नहीं लाता है, लेकिन दूसरे में लाता है।
मैं समझता हूं कि समस्या ऑफसेट है - यानी। जहां यह शुरू होता है। तो, पहली बार इसे दबाया जाता है, ऑफसेट 16 होना चाहिए, दूसरी बार 31, तीसरी बार 46 आदि
हालांकि, जहां मुझे कठिनाई हो रही है, इस ऑफसेट से गुज़र रही है। ,
function load_more_posts() {
if(isset($_POST['post_type']) && $_POST['post_type'] == 'publication'){
$args = array(
'offset' => $_POST['offset'],
'orderby' => 'post_date',
'order' => 'DESC',
'post_type' => 'article',
'post_status' => 'publish',
'meta_query' => array(
array(
'key' => 'related-publication',
'value' => $_POST['parent'],
'meta_compare' => 'IN'
)
)
);
} else if(isset($_POST['post_type']) && $_POST['post_type'] == 'category') {
$args = array(
'cat' => $_POST['parent'],
'offset' => $_POST['offset'],
'post_type' => array('post','article','publication')
);
} else {
// print_r($args);
}
$Query = new WP_Query($args);
//print_r($Query);
if ($Query->have_posts()) {
while ($Query->have_posts()) {
$Query->the_post();
get_template_part('loop', 'xxxry');
}
} else {
// print_r($args);
}
exit;
}
मैं एक सत्र ऑफसेट के लिए मूल्य पकड़े बनाने के लिए एक विचार था, हालांकि कि काम करने के लिए नहीं लगता था:
$('#do-show-more-posts').live('click', function(){
if($(this).data("o-set")){
$offset=$(this).data("o-set");
}else
{
$offset=16 ; //assume this is 16 initially
}
var post_type = $(this).attr('post-type');
var parent = $(this).attr('parent-id');
var offset = $('.article').size();
$(this).fadeTo(0,0);
$('.load-more-posts-wrapper .loader').addClass('show');
$.post(ajaxurl, { action: 'load_more_posts', post_type : post_type, parent : parent, offset : offset }, function(data){
$load_more = $('.load-more-posts-wrapper');
$load_more.find('.loader').removeClass('show');
$load_more.find('.link').removeAttr('style');
var load_more_button = '<div class="load-more-posts-wrapper">' + $load_more.html() + '</div>';
$load_more.remove();
if(data == '' || data == 'udefined' || data == 'No More Posts' || data == 'No $args array created'){
data = '';
load_more_button = '<div class="load-more-posts-wrapper">There are no more posts.</div>';
setTimeout("$('.load-more-posts-wrapper').fadeTo(1800,0)", 8000);
}
$('#content').append(data);
$('#content').append(load_more_button);
$(this).data("o-set",$offset);
});
});
यह PHP है:
इस js है । इसके अलावा, मुझे यकीन नहीं है कि अगर कोई उस श्रेणी पृष्ठ पर लौटता है तो मैं इसे कैसे हटा दूंगा।
कोड मैं का इस्तेमाल किया यह था:
if (isset($_SESSION['posts_start'])){
$_POST['offset']=$_SESSION['posts_start']+15;
$_SESSION['posts_start']=$_POST['offset'];
} else {
$_POST['offset']=15;
$_SESSION['posts_start']=$_POST['offset'];
}
मैं डाल कि php समारोह की शुरुआत में। अगर पहले से ही कोई सत्र था तो यह 15 के अतिरिक्त पंजीकरण को प्रतीत नहीं होता था।
क्या मूल्य रिटर्न चेतावनी (ऑफसेट); var offset = $ ('। article') के बाद सही कहा जाता है। आकार(); ? पहले, दूसरा और तीसरा पुनरावृत्ति, ज़ाहिर है। –
@ david.binda हमेशा 16 – user2029763
आपके यहां एक त्रुटि है: var offset = $ ('। Article')। आकार(); मैं मानता हूं कि नई पोस्ट में डार्टिकल क्लास सेट नहीं है। –