-
Notifications
You must be signed in to change notification settings - Fork 1
single.php
huai zhu edited this page May 17, 2024
·
4 revisions
-
使用
cache_results
参数:在WP_Query
对象中设置cache_results
参数为true
可以缓存查询结果,减少重复查询。这对于单篇文章页面非常有效,因为每次访问页面时都只需要查询一次数据库即可。 -
使用
no_found_rows
参数:设置no_found_rows
参数为true
可以避免计算查询结果数量,从而提高查询效率。在单篇文章页面中,我们已经知道只有一篇文章,所以不需要计算结果数量。
-
使用
if
语句简化循环:由于只有一个博文,不需要while
循环,可以直接使用if ( have_posts() )
判断是否有博文,如果有,则直接调用the_post()
获取博文内容。 - 使用注释:添加注释解释代码的功能,方便维护。
-
使用
WP_Query
对象:使用WP_Query
对象来进行查询,代码结构更清晰,也方便进行扩展。
<?php
/**
* The template for displaying all single posts.
*
* @link https://developer.wordpress.org/themes/basics/template-hierarchy/#single-post
*
* @package Akina
*/
get_header(); ?>
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<?php
while ( have_posts() ) : the_post();
get_template_part( 'tpl/content', 'single' );
get_template_part('layouts/sidebox');
get_template_part('layouts/post','nextprev');
endwhile; // End of the loop.
?>
</main><!-- #main -->
</div><!-- #primary -->
<?php
get_footer();
?>
<?php
/**
* The template for displaying all single posts.
*
* @link https://developer.wordpress.org/themes/basics/template-hierarchy/#single-post
*
* @package Akina
*/
get_header();
?>
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<?php
// 定义查询参数,开启缓存
$args = array(
'post_type' => 'post',
'posts_per_page' => 1,
'cache_results' => true,
'no_found_rows' => true
);
// 使用 WP_Query 对象进行查询
$query = new WP_Query($args);
// 检查是否有博文
if ($query->have_posts()) :
// 循环遍历博文
while ($query->have_posts()) : $query->the_post();
// 加载博文内容模板
get_template_part('tpl/content', 'single');
endwhile;
// 加载侧边栏模板
get_template_part('layouts/sidebox');
// 加载上一篇/下一篇链接模板
get_template_part('layouts/post','nextprev');
else:
// 加载没有博文时的模板
get_template_part('template-parts/content', 'none');
endif;
// 重置数据
wp_reset_postdata();
?>
</main><!-- #main -->
</div><!-- #primary -->
<?php
get_footer();
?>
-
更有效率:优化后的代码使用了
cache_results
和no_found_rows
参数来提高查询效率,并使用WP_Query
对象进行查询,代码结构更清晰。 -
更易读:优化后的代码使用了
if
语句简化循环,并添加了注释解释代码的功能,提高了代码可读性。