fix(admin): close hero/banner config chain in page-display IA

Wire existing HeroManager/BannerManager into page-display routes and
component loaders, fix banner REST round-trip (show_meta + optional title),
and retarget operator deep-links to the real slide managers.
This commit is contained in:
kate522 committed 2026-07-13 21:57:10 +08:00
1 parent 36f1588c6a
commit dcc82a39e7
8 files changed
+52 -17

No files matched your search

@@ -96,6 +96,7 @@ class AKSRT_Admin_Page_Display_Controller extends AKSRT_Admin_Controller_Base {
'device_visibility' => get_post_meta($post->ID, '_device_visibility', true) ?: 'all',
'enabled' => get_post_meta($post->ID, '_enabled', true) === '1',
'show_text' => get_post_meta($post->ID, '_show_text', true) !== '0',
'show_meta' => get_post_meta($post->ID, '_show_meta', true) === '1',
'kind' => get_post_meta($post->ID, '_aksrt_kind', true) ?: 'hero',
'sort_order' => $post->menu_order,
'text_size_pc' => get_post_meta($post->ID, '_text_size_pc', true) ?: '',
@@ -132,6 +133,7 @@ class AKSRT_Admin_Page_Display_Controller extends AKSRT_Admin_Controller_Base {
update_post_meta($post_id, '_device_visibility', in_array($params['device_visibility'] ?? '', ['all', 'pc', 'mobile'], true) ? $params['device_visibility'] : 'all');
update_post_meta($post_id, '_enabled', !array_key_exists('enabled', $params) || !empty($params['enabled']) ? '1' : '0');
update_post_meta($post_id, '_show_text', !array_key_exists('show_text', $params) || !empty($params['show_text']) ? '1' : '0');
update_post_meta($post_id, '_show_meta', !empty($params['show_meta']) ? '1' : '0');
update_post_meta($post_id, '_aksrt_kind', $kind);
update_post_meta($post_id, '_text_size_pc', sanitize_text_field($params['text_size_pc'] ?? ''));
update_post_meta($post_id, '_text_size_m', sanitize_text_field($params['text_size_m'] ?? ''));
@@ -158,7 +160,10 @@ class AKSRT_Admin_Page_Display_Controller extends AKSRT_Admin_Controller_Base {
$kind = $this->normalize_banner_kind($params['kind'] ?? get_post_meta($id, '_aksrt_kind', true) ?: 'hero');
$title = sanitize_text_field($params['title'] ?? '');
if ($title === '') {
return new WP_REST_Response(['code' => 'validation_error', 'message' => __('标题不能为空', 'aksrt')], 422);
$existing = get_the_title($id);
$title = is_string($existing) && $existing !== ''
? $existing
: ('banner' === $kind ? 'Banner Slide' : 'Hero Slide');
}
wp_update_post([
@@ -67,11 +67,12 @@ class AKSRT_Admin_Schema_Page_Display {
],
],
'header-components' => [
'key' => 'header-components',
'title' => '顶部多功能组件',
'version' => '1.1.0',
'option_key' => 'aksrt_settings',
'groups' => [
'key' => 'header-components',
'title' => '顶部多功能组件',
'description' => '配置顶部组件的显示范围、设备规则、轮播参数、搜索覆盖层与图标卡片。幻灯片图片/文案内容请到「Hero 轮播」「Banner 轮播」管理。',
'version' => '1.1.0',
'option_key' => 'aksrt_settings',
'groups' => [
['key' => 'visibility', 'title' => '显示规则', 'fields' => [
['key' => 'header_components_search_enabled', 'label' => '启用搜索覆盖层', 'type' => 'switch', 'default' => true],
['key' => 'header_components_cards_enabled', 'label' => '启用图标卡片', 'type' => 'switch', 'default' => false],