when the site is in a subdirectory the URL is not working probably in the index but works fine in archive page cause we preset the URL with "data-archive" and passing it...
for example is the site URL is
http://localhost/wordpress
in the homepage when scrolling to first div of "page-limit" the URL becomes
http://localhost/
or when load more becomes
http://localhost/page/2
So here's my solution I hope it's good
in index
`
<div class="container text-center container-load-previous">
<a class="btn-sunset-load sunset-load-more" data-prev="1" data-homepage="<?php echo sunset_grab_current_uri(); ?>" data-page="<?php echo sunset_check_paged(1); ?>" data-url="<?php echo admin_url('admin-ajax.php'); ?>">
<span class="sunset-icon sunset-loading"></span>
<span class="text">Load Previous</span>
</a>
</div><!-- .container -->
<?php endif; ?>
<div class="container sunset-posts-container">
<?php
if( have_posts() ):
echo '<div class="page-limit" data-page="' . sunset_grab_current_uri() . '">';
while( have_posts() ): the_post();
/*
$class = 'reveal';
set_query_var( 'post-class', $class );
*/
get_template_part( 'template-parts/content', get_post_format() );
endwhile;
echo '</div>';
endif;
?>
</div><!-- .container -->
<div class="container text-center">
<a class="btn-sunset-load sunset-load-more" data-homepage="<?php echo sunset_grab_current_uri(); ?>" data-page="<?php echo sunset_check_paged(1); ?>" data-url="<?php echo admin_url('admin-ajax.php'); ?>">
<span class="sunset-icon sunset-loading"></span>
<span class="text">Load More</span>
</a>
</div><!-- .container -->`
in sunset.js
`$(document).on('click','.sunset-load-more:not(.loading)', function(){
var that = $(this);
var page = $(this).data('page');
var newPage = page+1;
var ajaxurl = that.data('url');
var prev = that.data('prev');
var archive = that.data('archive');
var homepage = that.data('homepage');
if( typeof prev === 'undefined' ){
prev = 0;
}
if( typeof archive === 'undefined' ){
archive = homepage;
}
that.addClass('loading').find('.text').slideUp(320);
that.find('.sunset-icon').addClass('spin');
$.ajax({
url : ajaxurl,
type : 'post',
data : {
page : page,
prev : prev,
archive: archive,
action: 'sunset_load_more'
},
error : function( response ){
console.log(response);
},
success : function( response ){
if( response == 0 ){
$('.sunset-posts-container').append( '<div class="text-center"><h3>You reached the end of the line!</h3><p>No more posts to load.</p></div>' );
that.slideUp(320);
} else {
setTimeout(function(){
if( prev == 1 ){
$('.sunset-posts-container').prepend( response );
newPage = page-1;
} else {
$('.sunset-posts-container').append( response );
}
if( newPage == 1 ){
that.slideUp(320);
} else {
that.data('page', newPage);
that.removeClass('loading').find('.text').slideDown(320);
that.find('.sunset-icon').removeClass('spin');
}
revealPosts();
}, 1000);
}
}
});
});`
in ajax.php
`function sunset_load_more()
{
$paged = $_POST['page'] + 1;
$prev = $_POST['prev'];
$archive = $_POST['archive'];
if ($prev == 1 && $_POST['page'] != 1) {
$paged = $_POST['page'] - 1;
}
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'paged' => $paged,
);
if ($archive != '0') {
$archVal = explode('/', $archive);
$flipped = array_flip($archVal);
switch (isset($flipped)) {
case $flipped['category']:
$type = 'category_name';
$key = 'category';
break;
case $flipped['tag']:
$type = 'tag';
$key = $type;
break;
case $flipped['author']:
$type = 'author';
$key = $type;
break;
}
$currKey = array_keys($archVal, $key);
$nextKey = $currKey[0] + 1;
$value = $archVal[ $nextKey ];
$args[ $type ] = $value;
//check page trail and remove "page" value
if (isset($flipped['page'])) {
$pageVal = explode('page', $archive);
$page_trail = $pageVal[0];
} else {
$page_trail = $archive;
}
} else {
$page_trail = '/';
}
$query = new WP_Query($args);
if ($query->have_posts()):
echo '<div class="page-limit" data-page="'.$page_trail.'page/'.$paged.'/">';
while ($query->have_posts()): $query->the_post();
get_template_part('template-parts/content', get_post_format());
endwhile;
echo '</div>'; else:
echo 0;
endif;
wp_reset_postdata();
die();
}and as improvment in archive.php
<div class="container text-center container-load-previous">
<a class="btn-sunset-load sunset-load-more" data-prev="1" data-archive="<?php echo sunset_grab_current_uri(); ?>" data-page="<?php echo sunset_check_paged(1); ?>" data-url="<?php echo admin_url('admin-ajax.php'); ?>">
<span class="sunset-icon sunset-loading"></span>
<span class="text">Load Previous</span>
</a>
</div><!-- .container -->
<?php endif; ?>
<div class="container sunset-posts-container">
<?php
if( have_posts() ):
echo '<div class="page-limit" data-page="' . sunset_grab_current_uri() . '">';
while( have_posts() ): the_post();
get_template_part( 'template-parts/content', get_post_format() );
endwhile;
echo '</div>';
endif;
?>
</div><!-- .container -->
<div class="container text-center">
<a class="btn-sunset-load sunset-load-more" data-page="<?php echo sunset_check_paged(1); ?>" data-archive="<?php echo sunset_grab_current_uri(); ?>" data-url="<?php echo admin_url('admin-ajax.php'); ?>">
<span class="sunset-icon sunset-loading"></span>
<span class="text">Load More</span>
</a>
</div><!-- .container -->`
what I did is passing the full URL like you did in archive.php
I passed the full URL even in index...
I hope you see it and tell if there's something wrong in my code
when the site is in a subdirectory the URL is not working probably in the index but works fine in archive page cause we preset the URL with "data-archive" and passing it...
for example is the site URL is
http://localhost/wordpress
in the homepage when scrolling to first div of "page-limit" the URL becomes
http://localhost/
or when load more becomes
http://localhost/page/2
So here's my solution I hope it's good
in index
`
in sunset.js
`$(document).on('click','.sunset-load-more:not(.loading)', function(){
in ajax.php
`function sunset_load_more()
{
$paged = $_POST['page'] + 1;
$prev = $_POST['prev'];
$archive = $_POST['archive'];
}
and as improvment in archive.phpwhat I did is passing the full URL like you did in archive.php
I passed the full URL even in index...
I hope you see it and tell if there's something wrong in my code