Merge pull request 'Worktree fix theme toggle overlap' (#279) from worktree-fix-theme-toggle-overlap into main

Reviewed-on: CYL/wordpress-theme-aksrt#279
This commit is contained in:
2026-07-25 11:04:25 +08:00
4 changed files with 59 additions and 4 deletions
+5 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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() {
+2
View File
@@ -559,6 +559,8 @@ trait ScriptsPart1c {
'commentQuickPhrases' => class_exists('\AKSRT\Settings\Settings') ? (\AKSRT\Settings\Settings::get_comment_display_settings()['quick_phrases'] ?? []) : [],
'commentSmiliesBase' => function_exists('aksrt_comment_smilies_base_uri') ? aksrt_comment_smilies_base_uri() : (trailingslashit(get_template_directory_uri()) . 'assets/img/smilies/'),
'restUrl' => esc_url_raw(rest_url('aksrt/v1')),
// Alias used by modal-auth / follow / report (same value as restUrl).
'apiUrl' => esc_url_raw(rest_url('aksrt/v1')),
'stickyEnabled' => class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_post_list_style_settings()['sticky_enabled'] : true,
'stickyPages' => class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_post_list_style_settings()['sticky_pages'] : ['home', 'cat'],
'badgeShow' => class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_post_list_style_settings()['badge_show'] : true,