fix(page-display): connect header component visibility settings
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user