From ea83f2211c1b596f59b67166a398835e854f0e78 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 25 Aug 2026 19:14:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + templates/pages/page-submit.php | 3 +++ .../front-submit-editor-contract.test.cjs | 25 +++++++++++++++++++ 3 files changed, 29 insertions(+) create mode 100644 tests/widget-system/front-submit-editor-contract.test.cjs diff --git a/.gitignore b/.gitignore index 0e113860..62efbd9f 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,7 @@ !/tests/widget-system/asset-ledger-contract.test.cjs !/tests/widget-system/financial-flow-contract.test.cjs !/tests/widget-system/pay-orders-filter-contract.test.cjs +!/tests/widget-system/front-submit-editor-contract.test.cjs !/tests/asset-ledger/ !/tests/asset-ledger/*.php !/tests/visual/docker-compose.zibll.yml diff --git a/templates/pages/page-submit.php b/templates/pages/page-submit.php index b740c72f..f18756f9 100644 --- a/templates/pages/page-submit.php +++ b/templates/pages/page-submit.php @@ -39,6 +39,9 @@ if (!empty($_GET['edit']) && empty($ctx['edit_post'])) { exit; } +// wp_editor() is rendered after get_header(); queue its runtime before wp_head. +wp_enqueue_editor(); + // Assets. $css = get_template_directory() . '/assets/css/frontend/pages/submit.css'; if (file_exists($css)) { diff --git a/tests/widget-system/front-submit-editor-contract.test.cjs b/tests/widget-system/front-submit-editor-contract.test.cjs new file mode 100644 index 00000000..bebe9a67 --- /dev/null +++ b/tests/widget-system/front-submit-editor-contract.test.cjs @@ -0,0 +1,25 @@ +const assert = require('node:assert/strict'); +const fs = require('node:fs'); +const path = require('node:path'); +const test = require('node:test'); + +const root = path.resolve(__dirname, '..', '..'); +const read = (file) => fs.readFileSync(path.join(root, file), 'utf8'); + +test('front submit enqueues the WordPress editor before wp_head is rendered', () => { + const source = read('templates/pages/page-submit.php'); + const enqueueAt = source.indexOf('wp_enqueue_editor();'); + const headerAt = source.indexOf('\nget_header();'); + + assert.notEqual(enqueueAt, -1, 'front submit must explicitly enqueue the editor runtime'); + assert.notEqual(headerAt, -1, 'front submit must render the theme header'); + assert.ok(enqueueAt < headerAt, 'editor assets must be queued before get_header()/wp_head'); +}); + +test('published post content reaches the front submit editor unchanged', () => { + const context = read('templates/parts/submit/context.php'); + const editor = read('templates/parts/submit/editor-main.php'); + + assert.match(context, /\$current_content\s*=\s*\$edit_post\s*\?\s*\$edit_post->post_content\s*:\s*'';/); + assert.match(editor, /wp_editor\(\(string\) \$ctx\['current_content'\], 'post_content', \$editor_settings\);/); +});