Merge pull request '清理 page-header 传参:主路径改 $args 契约' (#26) from worktree-bg-unified-single-home-mainline into main
Reviewed-on: CYL/wordpress-theme-aksrt#26
This commit is contained in:
+6
-5
@@ -53,11 +53,12 @@ if (function_exists('aksrt_archive_open_shell')) {
|
||||
aksrt_render_admin_quick_link('post-list/list', __('列表样式设置', 'aksrt'));
|
||||
}
|
||||
$admin_link = trim((string) ob_get_clean());
|
||||
set_query_var('aksrt_ph_eyebrow', __('内容归档', 'aksrt'));
|
||||
set_query_var('aksrt_ph_title', get_the_archive_title());
|
||||
set_query_var('aksrt_ph_desc', $archive_summary);
|
||||
set_query_var('aksrt_ph_extra', $admin_link);
|
||||
get_template_part('templates/parts/page-header');
|
||||
get_template_part('templates/parts/page-header', null, [
|
||||
'eyebrow' => __('内容归档', 'aksrt'),
|
||||
'title' => get_the_archive_title(),
|
||||
'desc' => $archive_summary,
|
||||
'extra' => $admin_link,
|
||||
]);
|
||||
?>
|
||||
|
||||
<?php
|
||||
|
||||
@@ -22,7 +22,7 @@ $show_sidebar = function_exists('aksrt_is_show_sidebar') ? aksrt_is_show_sidebar
|
||||
<div id="reading-progress-global" class="reading-progress-bar" role="progressbar" aria-label="<?php esc_attr_e('阅读进度', 'aksrt'); ?>" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"></div>
|
||||
<?php endif; ?>
|
||||
|
||||
<main id="main-content" class="container page-content-<?php echo esc_attr($page_content_style); ?> page-id-<?php echo esc_attr((string) $page_id); ?>" tabindex="-1">
|
||||
<main id="main-content" class="site-main container content-shell content-shell--page page-content-<?php echo esc_attr($page_content_style); ?> page-id-<?php echo esc_attr((string) $page_id); ?>" tabindex="-1">
|
||||
|
||||
<?php if (is_active_sidebar('page_top_fluid_' . $page_id)) : ?>
|
||||
<div class="fluid-widget-wrap">
|
||||
@@ -31,52 +31,54 @@ $show_sidebar = function_exists('aksrt_is_show_sidebar') ? aksrt_is_show_sidebar
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="content-wrap">
|
||||
<div class="content-layout<?php echo $show_sidebar ? "" : " no-sidebar"; ?>">
|
||||
<div class="content-layout<?php echo $show_sidebar ? '' : ' content-layout--no-sidebar'; ?>">
|
||||
<div class="content-layout__primary">
|
||||
<?php if (is_active_sidebar('page_top_content_' . $page_id)) : ?>
|
||||
<?php dynamic_sidebar('page_top_content_' . $page_id); ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php
|
||||
while ( have_posts() ) :
|
||||
while (have_posts()) :
|
||||
the_post();
|
||||
|
||||
$page_meta_header_style = get_post_meta(get_the_ID(), 'page_header_style', true);
|
||||
$ph_style_override = null;
|
||||
if ($page_meta_header_style !== '' && in_array($page_meta_header_style, ['', '1', '2', '3', 'not'], true)) {
|
||||
$ph_style_override = ($page_meta_header_style === 'not') ? '' : $page_meta_header_style;
|
||||
}
|
||||
$page_cover = (string) get_post_meta(get_the_ID(), 'page_header_cover_img', true);
|
||||
$header_args = [
|
||||
'title' => get_the_title(),
|
||||
];
|
||||
if ($ph_style_override !== null) {
|
||||
$header_args['style'] = $ph_style_override;
|
||||
}
|
||||
if ($page_cover !== '') {
|
||||
$header_args['cover'] = esc_url($page_cover);
|
||||
}
|
||||
?>
|
||||
<article <?php post_class('entry-page'); ?>>
|
||||
<?php
|
||||
$page_meta_header_style = get_post_meta(get_the_ID(), 'page_header_style', true);
|
||||
if ($page_meta_header_style !== '' && in_array($page_meta_header_style, ['', '1', '2', '3', 'not'], true)) {
|
||||
$ph_style_override = ($page_meta_header_style === 'not') ? '' : $page_meta_header_style;
|
||||
set_query_var('aksrt_ph_style', $ph_style_override);
|
||||
}
|
||||
$page_cover = get_post_meta(get_the_ID(), 'page_header_cover_img', true);
|
||||
if (!empty($page_cover)) {
|
||||
set_query_var('aksrt_ph_cover', esc_url($page_cover));
|
||||
}
|
||||
set_query_var('aksrt_ph_title', get_the_title());
|
||||
get_template_part('templates/parts/page-header');
|
||||
?>
|
||||
<?php get_template_part('templates/parts/page-header', null, $header_args); ?>
|
||||
|
||||
<?php if ( has_post_thumbnail() ) : ?>
|
||||
<?php if (has_post_thumbnail()) : ?>
|
||||
<figure class="entry-thumb">
|
||||
<?php the_post_thumbnail( 'large' ); ?>
|
||||
<?php the_post_thumbnail('large'); ?>
|
||||
</figure>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="entry-content" data-aksrt-lightbox="<?php echo !empty($page_settings['lightbox']) ? '1' : '0'; ?>">
|
||||
<?php the_content(); ?>
|
||||
<?php
|
||||
wp_link_pages(
|
||||
array(
|
||||
'before' => '<nav class="page-links"><span class="page-links-title">' . esc_html__( '分页:', 'aksrt' ) . '</span>',
|
||||
'after' => '</nav>',
|
||||
)
|
||||
);
|
||||
wp_link_pages([
|
||||
'before' => '<nav class="page-links"><span class="page-links-title">' . esc_html__('分页:', 'aksrt') . '</span>',
|
||||
'after' => '</nav>',
|
||||
]);
|
||||
?>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<?php
|
||||
if ( comments_open() || get_comments_number() ) {
|
||||
if (comments_open() || get_comments_number()) {
|
||||
echo '<div class="theme-box box-body radius8 main-shadow comments-card">';
|
||||
comments_template();
|
||||
echo '</div>';
|
||||
@@ -92,7 +94,7 @@ $show_sidebar = function_exists('aksrt_is_show_sidebar') ? aksrt_is_show_sidebar
|
||||
|
||||
<?php if ($show_sidebar) : ?>
|
||||
<?php get_sidebar(); ?>
|
||||
<?php endif; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
+6
-5
@@ -145,11 +145,12 @@ if (function_exists('aksrt_archive_open_shell')) {
|
||||
aksrt_render_admin_quick_link('page-display/other', __('搜索页设置', 'aksrt'));
|
||||
}
|
||||
$admin_link = trim((string) ob_get_clean());
|
||||
set_query_var('aksrt_ph_eyebrow', __('站内搜索', 'aksrt'));
|
||||
set_query_var('aksrt_ph_title', $search_title);
|
||||
set_query_var('aksrt_ph_desc', $search_desc);
|
||||
set_query_var('aksrt_ph_extra', $admin_link);
|
||||
get_template_part('templates/parts/page-header');
|
||||
get_template_part('templates/parts/page-header', null, [
|
||||
'eyebrow' => __('站内搜索', 'aksrt'),
|
||||
'title' => $search_title,
|
||||
'desc' => $search_desc,
|
||||
'extra' => $admin_link,
|
||||
]);
|
||||
?>
|
||||
|
||||
<section class="content-stream content-stream--search content-stream--archive" data-page-kind="search" data-render-mode="<?php echo esc_attr((string) $render_config['mode']); ?>" data-card-style="<?php echo esc_attr((string) $render_config['card_style']); ?>">
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user