清理 page-header 传参:主路径改 $args 契约

archive/search/page 不再用 aksrt_ph_* query-var 传参,
page.php 同步对齐 content-shell 主结构。
This commit is contained in:
2026-07-09 22:57:37 +08:00
parent 00c1f9ca70
commit 9fd0735e97
4 changed files with 82 additions and 61 deletions
+42 -25
View File
@@ -2,49 +2,66 @@
/**
* Reusable Page Header Template Part.
*
* Renders a unified page header for archive / search / page templates.
* Style is driven by the global setting `page_header_style` with optional
* per-page post-meta override (`page_header_style`).
* Contract: get_template_part(..., null, $args)
* Prefer explicit $args over ambient query vars.
*
* Query vars consumed (set via set_query_var before calling get_template_part):
* aksrt_ph_style – override style ('' | '1' | '2' | '3'), defaults to global setting
* aksrt_ph_eyebrow – eyebrow label text
* aksrt_ph_title – title HTML (already escaped by caller)
* aksrt_ph_desc – description text
* aksrt_ph_cover – cover image URL override
* aksrt_ph_extra – extra HTML appended inside the body area (e.g. admin quick-links)
* Args:
* style – '' | '1' | '2' | '3' | 'not'
* eyebrow – eyebrow label text
* title – title HTML (caller escapes)
* desc – description text
* cover – cover image URL override
* extra – extra HTML (caller escapes)
*
* @package AKSRT
*/
defined('ABSPATH') || exit;
// Resolve style: explicit query var > global setting.
$ph_style = get_query_var('aksrt_ph_style', null);
$args = is_array($args ?? null) ? $args : [];
// Resolve style: explicit args > residual query var > global setting.
$ph_style = array_key_exists('style', $args) ? $args['style'] : null;
if ($ph_style === null) {
$ph_style = get_query_var('aksrt_ph_style', null);
}
if ($ph_style === null) {
$ph_style = class_exists('AKSRT_Settings')
? (AKSRT_Settings::get_other_page_settings()['header_style'] ?? '1')
: '1';
}
if ($ph_style === 'not') {
$ph_style = '';
}
// '' means "don't show header"
if ($ph_style === '') {
return;
}
$ph_eyebrow = get_query_var('aksrt_ph_eyebrow', '');
$ph_title = get_query_var('aksrt_ph_title', '');
$ph_desc = get_query_var('aksrt_ph_desc', '');
$ph_extra = get_query_var('aksrt_ph_extra', '');
$ph_eyebrow = array_key_exists('eyebrow', $args)
? (string) $args['eyebrow']
: (string) get_query_var('aksrt_ph_eyebrow', '');
$ph_title = array_key_exists('title', $args)
? (string) $args['title']
: (string) get_query_var('aksrt_ph_title', '');
$ph_desc = array_key_exists('desc', $args)
? (string) $args['desc']
: (string) get_query_var('aksrt_ph_desc', '');
$ph_extra = array_key_exists('extra', $args)
? (string) $args['extra']
: (string) get_query_var('aksrt_ph_extra', '');
// Cover image: explicit > global setting > post thumbnail.
$ph_cover = get_query_var('aksrt_ph_cover', '');
if (empty($ph_cover) && class_exists('AKSRT_Settings')) {
// Cover image: explicit args > residual query var > global setting > post thumbnail.
$ph_cover = array_key_exists('cover', $args)
? (string) $args['cover']
: (string) get_query_var('aksrt_ph_cover', '');
if ($ph_cover === '' && class_exists('AKSRT_Settings')) {
$other = AKSRT_Settings::get_other_page_settings();
$ph_cover = $other['header_cover_img'] ?? '';
$ph_cover = (string) ($other['header_cover_img'] ?? '');
}
if (empty($ph_cover) && has_post_thumbnail()) {
$ph_cover = get_the_post_thumbnail_url(get_the_ID(), 'full');
if ($ph_cover === '' && has_post_thumbnail()) {
$ph_cover = (string) get_the_post_thumbnail_url(get_the_ID(), 'full');
}
// Map style value to CSS modifier class.
@@ -57,13 +74,13 @@ if ($ph_style === '2') {
// Cover inline style (for cover style).
$cover_style = '';
if ($ph_style === '3' && !empty($ph_cover)) {
if ($ph_style === '3' && $ph_cover !== '') {
$cover_style = ' style="background-image:url(\'' . esc_url($ph_cover) . '\')"';
}
?>
<header class="page-header term-page-header <?php echo esc_attr($style_class); ?>">
<?php if ($ph_style === '3' && !empty($ph_cover)) : ?>
<?php if ($ph_style === '3' && $ph_cover !== '') : ?>
<div class="term-page-header__cover-bg"<?php echo $cover_style; /* phpcs:ignore -- escaped above */ ?>>
<div class="term-page-header__cover-overlay"></div>
</div>
@@ -87,7 +104,7 @@ if ($ph_style === '3' && !empty($ph_cover)) {
<?php endif; ?>
</div>
<?php if ($ph_style === '2' && !empty($ph_cover)) : ?>
<?php if ($ph_style === '2' && $ph_cover !== '') : ?>
<div class="term-page-header__cover"<?php echo $cover_style; /* phpcs:ignore -- escaped above */ ?>></div>
<?php endif; ?>
</header>