fix(page-display): connect header component visibility settings

This commit is contained in:
2026-08-19 13:35:31 +08:00
parent 8a738c7998
commit d4a9b7fd98
8 changed files with 152 additions and 34 deletions
@@ -7,6 +7,25 @@ namespace {
define('ABSPATH', __DIR__);
$GLOBALS['aksrt_test_options'] = [];
$GLOBALS['aksrt_test_manage_options'] = false;
$GLOBALS['aksrt_visibility_query'] = '';
$GLOBALS['aksrt_visibility_page_config'] = [];
final class WP_Query {
/** @var array<string,mixed> */
private array $vars;
/** @param array<string,mixed> $vars */
public function __construct(array $vars = []) {
$this->vars = $vars;
}
/** @return mixed */
public function get(string $key) {
return $this->vars[$key] ?? null;
}
}
$GLOBALS['wp_query'] = new WP_Query();
function sanitize_key($value): string {
return preg_replace('/[^a-z0-9_\-]/', '', strtolower((string) $value));
@@ -66,11 +85,47 @@ namespace {
function current_user_can($capability): bool {
return $capability === 'manage_options' && !empty($GLOBALS['aksrt_test_manage_options']);
}
function is_admin(): bool { return false; }
function wp_is_mobile(): bool { return false; }
function is_home(): bool { return $GLOBALS['aksrt_visibility_query'] === 'home'; }
function is_front_page(): bool { return $GLOBALS['aksrt_visibility_query'] === 'home'; }
function is_category(): bool { return $GLOBALS['aksrt_visibility_query'] === 'category'; }
function is_tag(): bool { return $GLOBALS['aksrt_visibility_query'] === 'tag'; }
function is_author(): bool { return $GLOBALS['aksrt_visibility_query'] === 'author'; }
function is_singular(string $type = ''): bool { return $type === 'post' && $GLOBALS['aksrt_visibility_query'] === 'single'; }
function is_search(): bool { return $GLOBALS['aksrt_visibility_query'] === 'search'; }
function is_page(): bool {
return in_array($GLOBALS['aksrt_visibility_query'], ['page', 'user_home_page', 'user_center_page'], true);
}
function is_page_template(string $template): bool { return false; }
function get_queried_object_id(): int { return 42; }
/** @return mixed */
function get_post_meta(int $post_id, string $key, bool $single = false) {
return $GLOBALS['aksrt_visibility_page_config'];
}
function aksrt_is_user_home_page(): bool {
return in_array($GLOBALS['aksrt_visibility_query'], ['user_home', 'user_home_page'], true);
}
function aksrt_is_user_center_page(): bool {
return in_array($GLOBALS['aksrt_visibility_query'], ['user_center', 'user_center_page'], true);
}
}
namespace AKSRT\Settings {
class Settings {
/** @var array<string,mixed> */
public static array $headerSlider = [];
public static function flush_settings_cache(): void {}
/** @return array<string,mixed> */
public static function get_header_slider_settings(): array {
return self::$headerSlider;
}
}
}
@@ -78,6 +133,7 @@ namespace {
require_once dirname(__DIR__, 2) . '/src/Admin/Schema/SchemaPageDisplay.php';
require_once dirname(__DIR__, 2) . '/src/Admin/SchemaProvider.php';
require_once dirname(__DIR__, 2) . '/src/Admin/ControllerBase.php';
require_once dirname(__DIR__, 2) . '/inc/helpers/homepage/header-components.php';
$controller = new class extends \AKSRT\Admin\ControllerBase {
public function register_routes(): void {}
@@ -129,6 +185,37 @@ namespace {
$category_clean = $provider->sanitize_payload('page_display', $category_payload, 'category');
$category_validation = $provider->validate('page_display', $category_clean, 'category');
/**
* @param list<string> $show_on
* @param array<string,mixed> $page_config
*/
function aksrt_visibility_case(string $query, array $show_on, array $page_config = []): bool {
$GLOBALS['aksrt_visibility_query'] = $query;
$GLOBALS['aksrt_visibility_page_config'] = $page_config;
\AKSRT\Settings\Settings::$headerSlider = [
'show_on_pages' => $show_on,
'show_type' => '',
];
return aksrt_header_slide_is_show();
}
$enabled_page_override = [
'header_slider_show' => true,
'header_slider_show_type' => '',
];
$visibility = [
'disabled' => aksrt_visibility_case('home', []),
'disabled_with_page_override' => aksrt_visibility_case('page', [], $enabled_page_override),
'page_enabled' => aksrt_visibility_case('page', ['page'], $enabled_page_override),
'public_user_home' => aksrt_visibility_case('user_home', ['user_home']),
'user_center' => aksrt_visibility_case('user_center', ['user_center']),
'legacy_author_public_home' => aksrt_visibility_case('user_home', ['author']),
'generic_page_excludes_home' => aksrt_visibility_case('user_home_page', ['page']),
'generic_page_excludes_center' => aksrt_visibility_case('user_center_page', ['page']),
'templated_public_user_home' => aksrt_visibility_case('user_home_page', ['user_home']),
'templated_user_center' => aksrt_visibility_case('user_center_page', ['user_center']),
];
echo json_encode([
'permission_denied' => $permission_denied,
'permission_allowed' => $permission_allowed,
@@ -141,5 +228,6 @@ namespace {
'footer_valid' => $footer_validation['valid'],
'footer_clean' => $footer_clean,
'footer_readback' => $footer_readback,
'visibility' => $visibility,
], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
}