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:
@@ -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'),
|
||||
|
||||
Reference in New Issue
Block a user