page banner 函数

function tt_page_banner($args = null) {  
    // 1. Ensure $args is an array so we can safely check/assign keys
    if ( ! is_array($args) ) {
        $args = array();
    }

    // 2. Fetch global fallbacks early to avoid repeated database calls
    $default_banner    = get_option('page_banner') ? get_option('page_banner') : get_theme_file_uri('/image/page_banner.jpg');
    $default_title     = get_option('page_banner_title', '');
    $default_subtitle  = get_option('page_banner_subtitle', '');

    // ==========================================
    // BANNER URL LOGIC
    // ==========================================
    if ( ! isset($args['banner_url']) ) {
        if ( is_singular() ) {
            $meta_url = get_post_meta(get_the_ID(), 'page_banner', true);
            $args['banner_url'] = ! empty($meta_url) ? $meta_url : $default_banner;
        } elseif ( is_archive() ) {
            $term_meta_url = get_term_meta(get_queried_object_id(), 'page_banner', true);
            $args['banner_url'] = ! empty($term_meta_url) ? $term_meta_url : $default_banner;
        } else {
            $args['banner_url'] = $default_banner;
        }
    }

    // ==========================================
    // BANNER TITLE LOGIC
    // ==========================================
    if ( ! isset($args['banner_title']) ) {
        if ( is_singular() ) {
            $meta_title = get_post_meta(get_the_ID(), 'page_banner_title', true);
            $args['banner_title'] = ! empty($meta_title) ? $meta_title : ( ! empty($default_title) ? $default_title : get_the_title() );
        } elseif ( is_post_type_archive() ) {
            // Checked BEFORE general is_archive() so it catches CPT archives correctly
            $args['banner_title'] = post_type_archive_title('', false); 
        } elseif ( is_archive() ) {
            $term_meta_title = get_term_meta(get_queried_object_id(), 'page_banner_title', true);
            $args['banner_title'] = ! empty($term_meta_title) ? $term_meta_title : ( ! empty($default_title) ? $default_title : single_term_title('', false) );
        } elseif ( is_search() ) {
            $args['banner_title'] = sprintf(__('Search Results for: %s', 'textdomain'), get_search_query());
        } elseif ( is_404() ) {
            $args['banner_title'] = __('Page Not Found', 'textdomain');
        } else {
            $args['banner_title'] = ! empty($default_title) ? $default_title : get_bloginfo('name');
        }
    }

    // ==========================================
    // BANNER SUBTITLE LOGIC
    // ==========================================
    if ( ! isset($args['banner_subtitle']) ) {
        if ( is_singular() ) {
            $meta_sub = get_post_meta(get_the_ID(), 'page_banner_subtitle', true);
            $args['banner_subtitle'] = ! empty($meta_sub) ? $meta_sub : $default_subtitle;
        } elseif ( is_archive() ) {
            $term_meta_sub = get_term_meta(get_queried_object_id(), 'page_banner_subtitle', true);
            $args['banner_subtitle'] = ! empty($term_meta_sub) ? $term_meta_sub : $default_subtitle;
        } else {
            $args['banner_subtitle'] = $default_subtitle;
        }
    }

    // ==========================================
    // HTML OUTPUT (With proper escaping)
    // ==========================================
    ?>
    <section class="page-banner" id="pageBanner">
        <div class="page-banner__bg">
            <div class="page-banner__img-placeholder">
                <div class="page-banner__img-inner">
                    <img src="<?php echo esc_url($args['banner_url']); ?>" alt="<?php echo esc_attr($args['banner_title']); ?>">
                </div>
            </div>
            <div class="page-banner__overlay"></div>
        </div>
        <div class="page-banner__content">
            <h1 class="page-banner__title reveal-up">
                <?php echo esc_html($args['banner_title']); ?>
            </h1>
            <?php if ( ! empty($args['banner_subtitle']) ) : ?>
                <p class="page-banner__sub reveal-fade delay-1">
                    <?php echo esc_html($args['banner_subtitle']); ?>
                </p>
            <?php endif; ?>
        </div>
    </section>
    <?php 
}
×
page banner 函数

page banner 函数

function tt_page_ban...