「所有文章」列表此前只有互动数据列,缺少销售数据表头;快捷/批量编辑 展开后也只有原生三项。本次对照参考主题补齐这两处,不含专题链路。 - 新增 PostListEnhance:统管 sale/stats 两列、付费类型筛选、 orderby=sales_volume 排序,以及四组快捷编辑字段的渲染与保存 - 新增 PostListEditFields:单独承载字段定义,主类职责保持单一 - 新增 admin-post-list.js:按 pay_type/pay_modo 勾选切换字段显隐 - 从 inc/core-hooks.php 迁出原有列实现(删 74 行),不再保留旧闭包 - 清理 admin-main.css 中确认无引用的 .aksrt-tab-pane 与 .aksrt-modal* 死块 - 新增 post-list-quick-edit-contract 测试,更新 stats/icon-picker 契约 快捷编辑锚点列用互动数据列而非参考主题的专题分类法列(本项目无专题)。 真实销量改为页面级批量查询,避免逐行查库。金额运算统一走 Ledger 的 「分」单位,不用裸浮点。保存走 edit_post 钩子,一次覆盖快捷与批量两条路径。
73 lines
2.2 KiB
JavaScript
73 lines
2.2 KiB
JavaScript
/**
|
|
* Post list quick-edit dependency toggling.
|
|
*
|
|
* The pay quick-edit box hides fields whose dependency rules no longer match
|
|
* the selected 付费模式 / 支付类型, mirroring the reference theme's field
|
|
* visibility. Runs on the WP inline-edit row when it is opened or changed.
|
|
*/
|
|
(function () {
|
|
'use strict';
|
|
|
|
function readControl(row, fieldId) {
|
|
var input = row.querySelector(
|
|
'[name="aksrt_bulk_edit[pay][' + fieldId + ']"],' +
|
|
' [name="aksrt_bulk_edit[pay][' + fieldId + '][operation]"]'
|
|
);
|
|
if (!input) return null;
|
|
if (input.tagName === 'SELECT') return input.value;
|
|
var checked = row.querySelector(
|
|
'[name="aksrt_bulk_edit[pay][' + fieldId + ']"]:checked'
|
|
);
|
|
if (input.type === 'radio' && checked) return checked.value;
|
|
return input.value;
|
|
}
|
|
|
|
function compare(actual, operator, expected) {
|
|
if (actual === null) return true;
|
|
if (operator === '==') return actual === expected;
|
|
if (operator === '!=') return actual !== expected;
|
|
return true;
|
|
}
|
|
|
|
function updateRow(row) {
|
|
var boxes = row.querySelectorAll('.aksrt-bulk-edit-box[data-dependency]');
|
|
Array.prototype.forEach.call(boxes, function (box) {
|
|
var rules;
|
|
try {
|
|
rules = JSON.parse(box.getAttribute('data-dependency'));
|
|
} catch (e) {
|
|
return;
|
|
}
|
|
if (!Array.isArray(rules)) return;
|
|
|
|
var visible = rules.every(function (rule) {
|
|
return compare(readControl(row, rule[0]), rule[1], String(rule[2]));
|
|
});
|
|
box.style.display = visible ? '' : 'none';
|
|
});
|
|
}
|
|
|
|
function syncRows() {
|
|
var rows = document.querySelectorAll('.inline-edit-row, #bulk-edit-row');
|
|
Array.prototype.forEach.call(rows, function (row) {
|
|
if (row.querySelector('[data-dependency]')) updateRow(row);
|
|
});
|
|
}
|
|
|
|
document.addEventListener('change', function (event) {
|
|
var target = event.target;
|
|
if (!target || !target.name || target.name.indexOf('aksrt_bulk_edit[pay]') !== 0) return;
|
|
var row = target.closest('.inline-edit-row, #bulk-edit-row');
|
|
if (row) updateRow(row);
|
|
});
|
|
|
|
// WP swaps the inline-edit row without a change event.
|
|
document.addEventListener('click', function (event) {
|
|
var target = event.target;
|
|
if (!target || !target.closest) return;
|
|
if (target.closest('.editinline, .bulk-action')) window.setTimeout(syncRows, 50);
|
|
});
|
|
|
|
syncRows();
|
|
})();
|