fix(auth): use restUrl for modal-login under plain permalinks
Local WP has empty permalink_structure so /wp-json/* 404s on Apache. modal-auth fell back to /wp-json/aksrt/v1; prefer aksrtData.restUrl (index.php?rest_route=/aksrt/v1) and join paths correctly.
This commit is contained in:
+5
-1
@@ -8,7 +8,11 @@
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
var API_ROOT = (window.aksrtData && window.aksrtData.apiUrl) || '/wp-json/aksrt/v1';
|
||||
var API_ROOT = (function () {
|
||||
var d = window.aksrtData || {};
|
||||
var raw = d.apiUrl || d.restUrl || d.rest_url || '/index.php?rest_route=/aksrt/v1';
|
||||
return String(raw).replace(/\/$/, '');
|
||||
})();
|
||||
var NONCE = (window.aksrtData && window.aksrtData.restNonce) || '';
|
||||
|
||||
function initFollowButtons() {
|
||||
|
||||
+47
-2
@@ -7,7 +7,30 @@
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
var API_ROOT = (window.aksrtData && window.aksrtData.apiUrl) || '/wp-json/aksrt/v1';
|
||||
/**
|
||||
* Resolve REST root for aksrt/v1.
|
||||
* Prefer aksrtData.restUrl (works with plain permalinks: index.php?rest_route=/aksrt/v1).
|
||||
* Do not hardcode /wp-json when rewrite rules are off — that 404s on Apache.
|
||||
*/
|
||||
function resolveApiRoot() {
|
||||
var d = window.aksrtData || {};
|
||||
var raw = d.apiUrl || d.restUrl || d.rest_url || '';
|
||||
if (!raw) {
|
||||
raw = '/index.php?rest_route=/aksrt/v1';
|
||||
}
|
||||
raw = String(raw).trim();
|
||||
// restUrl may be site root rest_url() without namespace in some localizes — ensure aksrt/v1.
|
||||
if (/rest_route=\/?$/.test(raw) || /\/wp-json\/?$/.test(raw)) {
|
||||
if (raw.indexOf('rest_route=') !== -1) {
|
||||
raw = raw.replace(/rest_route=\/?$/, 'rest_route=/aksrt/v1');
|
||||
} else {
|
||||
raw = raw.replace(/\/?$/, '/') + 'aksrt/v1';
|
||||
}
|
||||
}
|
||||
return raw.replace(/\/$/, '');
|
||||
}
|
||||
|
||||
var API_ROOT = resolveApiRoot();
|
||||
var NONCE = (window.aksrtData && window.aksrtData.restNonce) || '';
|
||||
|
||||
var modal = null;
|
||||
@@ -310,17 +333,39 @@
|
||||
headers['X-WP-Nonce'] = NONCE;
|
||||
}
|
||||
|
||||
return fetch(API_ROOT + path, {
|
||||
var url = joinRestPath(API_ROOT, path);
|
||||
|
||||
return fetch(url, {
|
||||
method: 'POST',
|
||||
headers: headers,
|
||||
credentials: 'same-origin',
|
||||
body: JSON.stringify(payload),
|
||||
}).then(function (response) {
|
||||
return response.json().then(function (data) {
|
||||
return { ok: response.ok, data: data };
|
||||
}).catch(function () {
|
||||
return { ok: false, data: { message: '响应解析失败' } };
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Join REST root + path for both pretty (/wp-json/aksrt/v1/x)
|
||||
* and plain (?rest_route=/aksrt/v1/x) permalinks.
|
||||
*/
|
||||
function joinRestPath(root, path) {
|
||||
path = String(path || '');
|
||||
if (path.charAt(0) !== '/') {
|
||||
path = '/' + path;
|
||||
}
|
||||
root = String(root || '').replace(/\/$/, '');
|
||||
if (root.indexOf('rest_route=') !== -1) {
|
||||
// e.g. https://host/index.php?rest_route=/aksrt/v1 + /auth/modal-login
|
||||
return root + path;
|
||||
}
|
||||
return root + path;
|
||||
}
|
||||
|
||||
function prefillLogin(value) {
|
||||
var loginInput = document.getElementById('modal-login-user');
|
||||
if (loginInput && value) {
|
||||
|
||||
+5
-1
@@ -9,7 +9,11 @@
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
var API_ROOT = (window.aksrtData && window.aksrtData.apiUrl) || '/wp-json/aksrt/v1';
|
||||
var API_ROOT = (function () {
|
||||
var d = window.aksrtData || {};
|
||||
var raw = d.apiUrl || d.restUrl || d.rest_url || '/index.php?rest_route=/aksrt/v1';
|
||||
return String(raw).replace(/\/$/, '');
|
||||
})();
|
||||
var NONCE = (window.aksrtData && window.aksrtData.restNonce) || '';
|
||||
|
||||
function getReportCategories() {
|
||||
|
||||
Reference in New Issue
Block a user