Created
May 5, 2022 12:55
-
-
Save Coop920/c057da0510f18ce01bc0ef15736131f7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Get posts via ajax and WP REST API. | |
* @param {object} options | |
*/ | |
_blogLoaded = false; | |
function getAjaxPosts(args) { | |
var $wrapper = $("#postsWrapper"), | |
context = $wrapper.attr("data-context"), | |
options = typeof args === "undefined" ? SAGE_ARCHIVE_VARS : args, | |
url = SAGE_AJAX_URL.ajaxurl + "wp-json/sugar/v1/" + context + "/?"; | |
// append options as params to url | |
url += $.param(options); | |
/* | |
* Make ajax request to WP endpoint. | |
* This is where most everything happens. | |
*/ | |
$.getJSON(url, function (data, status, xhr) { | |
// get response headers for pagination | |
totalPages = xhr.getResponseHeader("x-wp-totalpages"); | |
totalPosts = xhr.getResponseHeader("x-wp-total"); | |
// loop over each result and append to our wrapper | |
$(data).each(function () { | |
$wrapper.append(this.html); | |
totalReturned++; | |
}); | |
}).done(function() { | |
if( Object.keys(SAGE_ARCHIVE_VARS).length < 3 ) { | |
var current_page = SAGE_ARCHIVE_VARS.paged; | |
var url = 'https://' + window.location.hostname; | |
var pathname = window.location.pathname; | |
if( '' !== pathname ) { | |
pathname = pathname.split('/'); | |
console.log(pathname); | |
var root = pathname[1]; | |
} | |
//console.log( window.location ); | |
if( 1 === current_page ) { | |
url += '/' + root + '/'; | |
} else { | |
url += '/' + root + '/page/' + current_page + '/'; | |
} | |
if( true === _blogLoaded ) { | |
if (history.pushState) { | |
history.pushState({}, "Blog", url ); | |
} | |
//console.log( 'update URL to ' + url ); | |
} else { | |
_blogLoaded = true; | |
} | |
} else { | |
pathname = window.location.pathname; | |
if( '' !== pathname ) { | |
pathname = pathname.split('/'); | |
//console.log(pathname); | |
var root_new = pathname[1]; | |
} | |
//console.log( window.location ); | |
var url_new = window.location.origin + '/' + root_new + '/' + window.location.search; | |
history.pushState({}, "Blog", url_new ); | |
//console.log( 'category update URL to ' + url_new ); | |
} | |
// check if we should show load more button | |
$("#loadMoreBtn") | |
.attr("data-finished", totalReturned >= totalPosts) | |
.prop("disabled", false) | |
.text(function () { | |
return $(this).data("text"); | |
}); | |
// turn off ajax loader | |
$("#ajaxLoader").addClass("d-none"); | |
if (parseInt(totalPosts) > 0) { | |
var i = 0; | |
var resultsQuery = ""; | |
$.each(options, function (index, item) { | |
if (index === "posts_per_page" || index === "paged") { | |
if (!$("#showingResults").hasClass("d-none")) { | |
$("#showingResults").addClass("d-none"); | |
} | |
} else { | |
$("#showingResults").removeClass("d-none"); | |
$("#showingResults .result-number").html(parseInt(totalPosts)); | |
if (parseInt(totalPosts) > 1) { | |
if ($("#showingResults .plural").hasClass("d-none")) { | |
$("#showingResults .plural").removeClass("d-none"); | |
} | |
if (!$("#showingResults .singular").hasClass("d-none")) { | |
$("#showingResults .singular").addClass("d-none"); | |
} | |
} else { | |
if ($("#showingResults .singular").hasClass("d-none")) { | |
$("#showingResults .singular").removeClass("d-none"); | |
} | |
if (!$("#showingResults .plural").hasClass("d-none")) { | |
$("#showingResults .plural").addClass("d-none"); | |
} | |
} | |
var addArray = item.split(","); | |
$.each(addArray, function (index, item) { | |
if (i > 0) { | |
resultsQuery += ", "; | |
} | |
resultsQuery += '"'; | |
var add = item.replace("-", " "); | |
resultsQuery += add; | |
resultsQuery += '"'; | |
i++; | |
}); | |
} | |
}); | |
$("#showingResults .resultterms").html(resultsQuery); | |
} else { | |
if (!$("#showingResults").hasClass("d-none")) { | |
$("#showingResults").addClass("d-none"); | |
} | |
} | |
// result-terms | |
// if no posts are returned, add 'no posts found' message | |
if (parseInt(totalPosts) === 0) { | |
$wrapper.append( | |
'<div class="col-12"><div class="alert alert-warning">No results found. Try resetting your filters.</div></div>' | |
); | |
} | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment