fix(frontend): stop infinite pagination admin-ajax 400 spam

Hardened list-page infinite scroll so it no longer auto-fires three
admin-ajax requests on first paint, returns machine-readable nonce
errors, localizes aksrtData earlier for core modules, and ignores
UI-only data-action clicks.
This commit is contained in:
2026-07-13 09:45:05 +08:00
parent 964a6c9397
commit bf49982d16
4 changed files with 179 additions and 66 deletions
@@ -798,7 +798,8 @@ trait AKSRT_Scripts_Part_1b {
foreach ($core_modules as $handle => $file) {
$path = get_template_directory() . '/assets/js/core/' . $file;
if (file_exists($path)) {
$deps = ['aksrt-rehydrate'];
// Depend on aksrt-runtime so window.aksrtData (localized below) is available.
$deps = ['aksrt-rehydrate', 'aksrt-runtime'];
if ($handle === 'aksrt-core-slider') {
$deps = array_merge($deps, $needs_swiper ? ['aksrt-swiper'] : []);
}
@@ -1183,7 +1184,12 @@ trait AKSRT_Scripts_Part_1b {
$runtime_routes = $this->resolve_frontend_routes();
// 数据注入 - 全站统一消费 window.aksrtData
wp_localize_script('aksrt-script', 'aksrtData', [
// Attach to aksrt-runtime (loaded before all core modules) so ajaxUrl/nonce
// exist before pagination/search/article handlers run.
$aksrt_data_handle = wp_script_is('aksrt-runtime', 'registered') || wp_script_is('aksrt-runtime', 'enqueued')
? 'aksrt-runtime'
: 'aksrt-script';
wp_localize_script($aksrt_data_handle, 'aksrtData', [
'ajaxUrl' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('aksrt_public_nonce'),
'restNonce' => wp_create_nonce('wp_rest'),