您可以在任何类型的循环之前在小部件区域中挂接内容。
您可以使用类似钩子的loop\\u start从函数文件执行此操作,并在函数后包含一个条件标记,否则您可以在函数中注册小部件,并将模板标记直接添加到模板中。
register_sidebar(array(
\'name\' => __( \'Intro Widget\', \'theme_text_domain\' ),
\'id\' => \'intro-widget\',
\'before_widget\' => \'<div class=intro-widget">\',
\'after_widget\' => \'</div>\',
));
add_action( \'loop_start\', \'intro_widget\' );
function intro_widget() {
if ( is_post_type_archive() && is_active_sidebar( \'intro-widget\' ) ) {
dynamic_sidebar(\'intro-widget\', array(
\'before\' => \'<div class="intro-widget">\',
\'after\' => \'</div>\',
) );
}
}
您可能需要更改条件标记。
如果直接从模板文件调用侧栏,则不需要挂钩。
<?php if ( is_post_type_archive() && is_active_sidebar( \'intro-widget\' ) ) : ?>
<ul id="sidebar">
<?php dynamic_sidebar( \'intro-widget\' ); ?>
</ul>
<?php endif; ?>
这里有一个完整的自定义post类型归档文件,其中包括循环之前的小部件。
<?php
/**
* Adds the Full Width Custom Post Type Archive Page
*/
get_header(); ?>
<section id="primary" class="content-area">
<div id="content" class="site-content" role="main">
<?php if ( is_post_type_archive() && is_active_sidebar( \'intro-widget\' ) ) : ?>
<ul id="sidebar">
<?php dynamic_sidebar( \'intro-widget\' ); ?>
</ul>
<?php endif; ?>
<?php if ( have_posts() ) : ?>
<header class="archive-header">
<h1 class="archive-title"><?php printf( __( \'Portfolio Archives %s\', \'wpsites\' ), single_cat_title( \'\', false ) ); ?></h1>
<?php
// Show an optional term description.
$term_description = term_description();
if ( ! empty( $term_description ) ) :
printf( \'<div class="taxonomy-description">%s</div>\', $term_description );
endif;
?>
</header><!-- .archive-header -->
<?php
// Start the Loop.
while ( have_posts() ) : the_post();
get_template_part( \'content\', get_post_format() );
endwhile;
wpsites_page_nav();
else :
// If no content, include the "No posts found" template.
get_template_part( \'content\', \'none\' );
endif;
?>
</div><!-- #content -->
</section><!-- #primary -->
<?php
get_footer();