📅  最后修改于: 2023-12-03 15:00:54.326000             🧑  作者: Mango
在 WordPress 主题开发中,我们经常需要在不同的页面或部分使用相同的代码块,比如微博、评论、侧边栏等。为了避免代码冗余,我们可以使用 get_template_part 函数来复用这些代码块。
get_template_part( $slug, $name );
$slug
:代码块的文件名前缀,通常为 content
, excerpt
或 sidebar
等;$name
:代码块的文件名后缀,通常为文章类型(如 post
)、分类(如 category
)等。例如,我们要在文章循环中显示文章标题和摘要,可以在 index.php
中使用下面的代码:
while ( have_posts() ) : the_post();
get_template_part( 'content', get_post_format() );
endwhile;
get_template_part
函数会自动查找 content-{$post_format}.php
文件,比如对于格式为“链接”的文章,会查找 content-link.php
;对于无格式的文章,会查找 content.php
。如果文件不存在,将不会有输出。
使用 get_template_part
函数可以实现代码复用,避免代码冗余,提高代码的可维护性。
此外,使用 get_template_part
还可以更好地将代码组织为不同的模块,提高代码的可读性和可扩展性。如果要新增一个页面或代码块,只需要新增一个对应的模板文件即可,而不需要修改其他文件。
在 sidebar.php
中使用下面的代码来显示所有分类的列表:
<section class="widget widget_categories">
<h2 class="widget-title"><?php _e( 'Categories', 'textdomain' ); ?></h2>
<ul>
<?php
$args = array(
'orderby' => 'name',
'order' => 'ASC'
);
$categories = get_categories( $args );
foreach ( $categories as $category ) {
$category_link = sprintf(
'<a href="%1$s" alt="%2$s">%3$s</a>',
esc_url( get_category_link( $category->term_id ) ),
esc_attr( sprintf( __( 'View all posts in %s', 'textdomain' ), $category->name ) ),
esc_html( $category->name )
);
?>
<li>
<?php echo $category_link; ?>
</li>
<?php
}
?>
</ul>
</section>
然后在 front-page.php
或 index.php
中使用下面的代码来调用侧边栏:
get_sidebar();
在 index.php
中使用下面的代码来显示文章列表:
<h1><?php bloginfo( 'name' ); ?></h1>
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<article>
<header>
<h2>
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>
</h2>
<div class="entry-meta">
<span class="meta-date"><?php the_time( get_option( 'date_format' ) ); ?></span>
</div>
</header>
<div class="entry-summary">
<?php the_excerpt(); ?>
</div>
</article>
<?php endwhile; ?>
<?php endif; ?>
然后在 front-page.php
或 index.php
中使用下面的代码来调用文章列表:
<?php get_template_part( 'loop' ); ?>