chore(branding): remove leftover upstream theme identifiers

The theme was renamed Zibll/子比 → AKSRT → Jio, but upstream branding
survived the sweeps in CSS classes, the SVG sprite prefix, a persisted
widget field ID, JS events, admin Vue class names, test infrastructure
and docblocks.

Renames:
- zib-widget / zib-widget-wrap / zib-slider → jio-widget-box /
  jio-widget-box-wrap / jio-slider-box (jio-widget is taken by the modern
  widget shell, jio-box-* by the card primitives)
- zib-partners-scroll + zps-* → jio-partners-scroll + jps-*
- zib-combo-info-card + zci-* → jio-combo-info-card + jci-*
- zibsvg- → jiosvg-, including the exported picker helpers and the
  fa-zibsvg- family-prefix guard
- zibpay_type → pay_type; the dual-read fallback in PostQuery collapses
  to a single key
- [zibajax="submit"] dropped (no PHP emitter); zib_ajax.success →
  jio_ajax.success
- aks-* admin Vue classes → jio-*
- zib_palette() → palette()

User-facing vendor traces are gone: the floating "more" button default no
longer ships a zibll.com link or 子比主题 marketing copy, the notice
widget ships no preset promo entries, and the four 官网教程 links are
removed from the post-list admin schema.

Test infrastructure renamed to neutral names (docker-compose.reference.yml,
Caddyfile, article-baseline.json, modern-widgets-contract.test.cjs) with
their DB/volume/env/slug identifiers following.

Kept intentionally, documented in tests/fixtures/README.md: the golden
fixture reference fingerprint (a SHA-256 record of an external directory,
read by validate-widget-golden / generate-widget-golden-fixture /
audit-widget-system), the doesNotMatch guards that prove the old tokens are
gone, and the reference theme's own meta key in the visual fixtures.

No backward-compat or data migration: saved widget configs holding old
icon keys or the old field ID silently lose them, per the project's
rewrite-over-compatibility rule.

Verified: 132/132 node contract tests, php tests/widget-system/run.php
(146 assertions), audit-admin-contracts, audit-psr4-paths and
validate-widget-golden all green; tracked bundles regenerated and in sync.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
kate522andClaude Opus 5 committed 2026-11-02 00:06:54 +08:00
1 parent 42cc64106d
commit 427968a721
188 files changed
+915 -967

No files matched your search

+29 -22
View File
@@ -1,6 +1,6 @@
<?php
/**
* Theme-neutral article fixtures shared by the Zibll and Jio visual sites.
* Theme-neutral article fixtures shared by the reference and Jio visual sites.
*
* Usage: wp eval-file /visual-fixtures/article-fixtures.php create|cleanup
*/
@@ -12,8 +12,15 @@ if (!defined('WP_CLI') || !WP_CLI) {
}
$action = sanitize_key((string) ($args[0] ?? ''));
$manifest_key = 'zibll_article_visual_fixture_v1';
$prefix = 'zibll_article_v1_';
$manifest_key = 'article_visual_fixture_v1';
$prefix = 'article_v1_';
/**
* 参考主题读取自己的 meta 键来渲染副标题、封面与计数器;Jio 读取 jio_* 键。
* 这里同时写两套,保证两个站点渲染出的业务状态一致——这不是本主题的兼容层,
* 而是给外部参考系统做固件管道。
*/
const REFERENCE_META_KEY = 'zib_other_data';
if (!in_array($action, ['create', 'cleanup'], true)) {
WP_CLI::error('Expected create or cleanup.');
@@ -76,7 +83,7 @@ $manifest = [
'files' => [],
'options' => [],
];
foreach (['jio_settings', 'zibll_options'] as $option_name) {
foreach (['jio_settings', 'reference_options'] as $option_name) {
$manifest['options'][$option_name] = [
'exists' => get_option($option_name, null) !== null,
'value' => get_option($option_name),
@@ -110,7 +117,7 @@ try {
'post_related_orderby' => 'views',
'related_title' => '相关推荐',
];
foreach (['jio_settings', 'zibll_options'] as $option_name) {
foreach (['jio_settings', 'reference_options'] as $option_name) {
$current = get_option($option_name, []);
update_option($option_name, array_merge(is_array($current) ? $current : [], $visual_options), false);
}
@@ -136,8 +143,8 @@ try {
$manifest['users'][] = (int) $user_id;
}
$category = wp_insert_term('视觉文章', 'category', ['slug' => 'zibll-article-fixture']);
$tag = wp_insert_term('视觉标签', 'post_tag', ['slug' => 'zibll-visual-tag']);
$category = wp_insert_term('视觉文章', 'category', ['slug' => 'article-fixture']);
$tag = wp_insert_term('视觉标签', 'post_tag', ['slug' => 'visual-tag']);
if (is_wp_error($category) || is_wp_error($tag)) {
throw new RuntimeException('Unable to create article fixture terms.');
}
@@ -167,7 +174,7 @@ try {
$background = imagecolorallocate($image, $rgb[0], $rgb[1], $rgb[2]);
$foreground = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $background);
imagestring($image, 5, 48, 48, 'Zibll 9.0 Article Fixture ' . ($index + 1), $foreground);
imagestring($image, 5, 48, 48, 'Article Fixture ' . ($index + 1), $foreground);
imagejpeg($image, $filepath, 92);
imagedestroy($image);
} else {
@@ -193,9 +200,9 @@ try {
file_put_contents($video_path, '');
$manifest['files'][] = $video_path;
$video_url = trailingslashit($upload['url']) . basename($video_path);
$term_other = (array) get_term_meta($category_id, 'zib_other_data', true);
$term_other = (array) get_term_meta($category_id, REFERENCE_META_KEY, true);
$term_other['cover_image'] = $image_urls[4];
update_term_meta($category_id, 'zib_other_data', $term_other);
update_term_meta($category_id, REFERENCE_META_KEY, $term_other);
update_term_meta($category_id, 'cover_image', $image_urls[4]);
update_term_meta($category_id, 'jio_category_cover_id', $attachment_ids[4]);
@@ -211,7 +218,7 @@ try {
['slug' => 'first-image', 'title' => '文章首图作为缩略图', 'first_image' => 3],
];
foreach ($scenarios as $index => $scenario) {
$content = '<p>固定摘要正文,用于 Zibll 与 Jio 的文章列表逐像素比较。</p>';
$content = '<p>固定摘要正文,用于参考主题与 Jio 的文章列表逐像素比较。</p>';
if (!empty($scenario['gallery'])) {
$content .= implode('', array_map(static fn(string $url): string => '<img src="' . esc_url($url) . '" alt="">', array_slice($image_urls, 0, 4)));
} elseif (isset($scenario['first_image'])) {
@@ -245,26 +252,26 @@ try {
$post_meta = [
'subtitle' => ' · 固定副标题',
];
$zib_meta = (array) get_post_meta($post_id, 'zib_other_data', true);
$zib_meta['subtitle'] = $post_meta['subtitle'];
$reference_meta = (array) get_post_meta($post_id, REFERENCE_META_KEY, true);
$reference_meta['subtitle'] = $post_meta['subtitle'];
if (isset($scenario['external'])) {
$post_meta['thumbnail_url'] = $image_urls[(int) $scenario['external']];
$zib_meta['thumbnail_url'] = $post_meta['thumbnail_url'];
$reference_meta['thumbnail_url'] = $post_meta['thumbnail_url'];
}
if (!empty($scenario['slides'])) {
$post_meta['featured_slide'] = implode(',', array_slice($attachment_ids, 0, 4));
$zib_meta['featured_slide'] = $post_meta['featured_slide'];
$reference_meta['featured_slide'] = $post_meta['featured_slide'];
}
if (!empty($scenario['video'])) {
$post_meta['featured_video'] = $video_url;
$zib_meta['featured_video'] = $video_url;
$reference_meta['featured_video'] = $video_url;
}
$zib_meta['views'] = 1200 + ($index * 137);
$zib_meta['like'] = 30 + ($index * 7);
update_post_meta($post_id, 'zib_other_data', $zib_meta);
$reference_meta['views'] = 1200 + ($index * 137);
$reference_meta['like'] = 30 + ($index * 7);
update_post_meta($post_id, REFERENCE_META_KEY, $reference_meta);
update_post_meta($post_id, 'jio_post_meta', $post_meta);
update_post_meta($post_id, 'jio_post_views', $zib_meta['views']);
update_post_meta($post_id, '_jio_like_count', $zib_meta['like']);
update_post_meta($post_id, 'jio_post_views', $reference_meta['views']);
update_post_meta($post_id, '_jio_like_count', $reference_meta['like']);
update_post_meta($post_id, '_jio_favorite_count', 10 + $index);
$pay_type = (string) ($scenario['pay'] ?? 'no');
@@ -287,7 +294,7 @@ try {
stick_post((int) $manifest['posts'][0]);
}
update_option($manifest_key, $manifest, false);
WP_CLI::success('Created identical Zibll/Jio article fixtures.');
WP_CLI::success('Created identical reference/Jio article fixtures.');
} catch (Throwable $error) {
$cleanup($manifest);
WP_CLI::error('Fixture creation rolled back: ' . $error->getMessage());