fix(page-display): isolate header component page scopes

This commit is contained in:
kate522 committed 2026-08-19 13:45:54 +08:00
1 parent d4a9b7fd98
commit a5ed4bbb6f
3 files changed
+61 -33

No files matched your search

+48 -32
View File
@@ -48,42 +48,58 @@ if (!function_exists('aksrt_get_page_header_slider_config')) {
}
}
if (!function_exists('aksrt_header_slide_current_page_type')) {
/**
* Resolve one mutually exclusive page type for the header component.
*
* Custom rewrite requests can retain WordPress's is_home flag, so the
* explicit theme surfaces must win before the home fallback is evaluated.
*/
function aksrt_header_slide_current_page_type(): string {
if (is_author() || (function_exists('aksrt_is_user_home_page') && aksrt_is_user_home_page())) {
return 'author';
}
if (function_exists('aksrt_is_user_center_page') && aksrt_is_user_center_page()) {
return 'user_center';
}
if (is_front_page()) {
return 'home';
}
if (is_category()) {
return 'category';
}
if (is_tag()) {
return 'tag';
}
if (is_singular('post')) {
return 'single';
}
if (is_search()) {
return 'search';
}
if (is_page()) {
foreach (aksrt_header_slide_excluded_page_templates() as $template) {
if (is_page_template($template)) {
return '';
}
}
return 'page';
}
if (is_home()) {
return 'home';
}
return '';
}
}
if (!function_exists('aksrt_header_slide_matches_query')) {
function aksrt_header_slide_matches_query(string $type): bool {
$type = sanitize_key($type);
switch ($type) {
case 'home':
return is_home() || is_front_page();
case 'category':
return is_category();
case 'tag':
return is_tag();
case 'user_home':
case 'author':
return is_author() || (function_exists('aksrt_is_user_home_page') && aksrt_is_user_home_page());
case 'user_center':
return function_exists('aksrt_is_user_center_page') && aksrt_is_user_center_page();
case 'single':
return is_singular('post');
case 'search':
return is_search();
case 'page':
if (!is_page()) {
return false;
}
if ((function_exists('aksrt_is_user_home_page') && aksrt_is_user_home_page())
|| (function_exists('aksrt_is_user_center_page') && aksrt_is_user_center_page())) {
return false;
}
foreach (aksrt_header_slide_excluded_page_templates() as $template) {
if (is_page_template($template)) {
return false;
}
}
return true;
if ($type === 'user_home') {
$type = 'author';
}
return false;
return $type !== '' && $type === aksrt_header_slide_current_page_type();
}
}