Blogs主题如何在首页和列表页添加置顶文章功能?

 懿古今   2022-10-02 13:15:35 更新  技术文档

由于懿古今分享的主题都是用站长推荐来取代置顶文章,所以在编辑文章时,不管是否勾选了置顶文章都不会生效,虽然我自己用不到这个功能,但是也经常有站长问到如何添加置顶功能。今天懿古今就以WordPress 版本的 Blogs 主题为例添加首页和列表页的置顶功能,其他主题请参考折腾即可。

1、修改首页 index.php 文件

直接编辑 Blogs 主题的 index.php 文件,找到以下代码

<div id="post_list_box" class="border_gray">

在它下方添加以下代码:

<?php
$sticky = get_option( 'sticky_posts' );
query_posts( array('post__in' => $sticky,'showposts'=>3) );
?>
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<article id="post-<?php the_ID(); ?>" class="archive-list <?php $postds=$wp_query->current_post;if($postds % 2 ==0){echo "shuangshu";}?>">
<?php get_template_part( '/inc/content'); ?>
</article><!-- #post -->
<?php endwhile;endif; ?>

2、修改列表页 archive.php 文件

直接编辑 Blogs 主题的 archive.php 文件,找到以下代码

<div id="post_list_box" class="border_gray">

在它下方添加以下代码:

<?php
query_posts(array(
"category__in" => array(get_query_var("cat")),
"post__in" => get_option("sticky_posts"),
'showposts' => 3,
)
);
while(have_posts()) : the_post();
?>
<article id="post-<?php the_ID(); ?>" class="archive-list <?php $postds=$wp_query->current_post;if($postds % 2 ==0){echo "shuangshu";}?>">
<?php get_template_part( '/inc/content'); ?>
</article><!-- #post -->
<?php endwhile;wp_reset_query(); ?>

<?php
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$sticky = get_option( 'sticky_posts' );
$args = array(
'category__in' => array(get_query_var("cat")),
'post__not_in' => $sticky,
'paged' => $paged
);
query_posts( $args );
?>

3、修改 inc\content.php 文件

直接编辑 inc\content.php 文件,找到文章标题代码:

<?php the_title(); ?>

修改为

<?php if(is_sticky()){echo '【置顶】';}the_title(); ?>

至此,已经为 WordPress 版本的 Blogs 主题添加了置顶文章功能,接下来只需要在后台编辑文章的时候,在公开度 - 公开中勾选“将文章置于首页顶端”或快速编辑勾选“置顶这篇文章”即可。

Blogs主题如何在首页和列表页添加置顶文章功能? - 第1张 - 懿古今(www.yigujin.cn)

列表页置顶文章效果图

温馨提示:

  • 以上代码默认显示 3 篇置顶文章,想要显示更多只需要将 'showposts' => 3 中的 3 修改成其他数字即可。
  • 置顶样式默认只是在标题前方添加【置顶】字样而已,想要添加其他样式请自行编辑 inc\content.php 文件。
  • 如果不想折腾的话,直接点此下载“置顶修改文件(hc4b)”后上传覆盖即可。

本文地址:https://www.yigujin.cn/1812.html

你可能感兴趣的文章

文章标签: ,   ,  
版权声明:本文为原创文章,版权归 懿古今 所有,欢迎分享本文,转载请保留出处!发布此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请发邮件至[email protected],确认后马上更正、删除,谢谢!

发表评论

  1. 米扑博客
    米扑博客 @回复

    非常赞的总结,精华博客

    • 懿古今
      懿古今2018-11-15 09:38  回复

      @米扑博客[呲牙] 对于有需要的站长而言就很有用,要不然就是水文

  2. 大致
    大致 @回复

    第一个没调wp_reset_query();
    article class那个地方,最好调用post_class()
    archive里,”category__in” => array(get_query_var(“cat”)),是个没用的参数。你先取出所有的分类,然后指定“分类在所有分类”中……
    还有the_title是带参的,the_title(‘【置顶】’,”);就行了。

    • 懿古今
      懿古今2018-11-15 14:48  回复

      @大致[强] ”category__in” => array(get_query_var(“cat”))不知道是说哪一个,经过测试在分类列表中如果没有这个就会显示所有分类的文章。the_title带参数的话,好像也是要先判断是否为置顶文章,是才显示。因为我的置顶文章和普通文中共用content.php文件。对于业余折腾博客的我而言,能达成目的就是胜利,所以想要优化更好只能靠大家自行优化了。

      • 大致
        大致2018-11-15 15:33  回复

        @懿古今关于get_query_var(“cat”)是我说理解了。正常在archive里是不用管置顶的。
        让你在the_title里加参,当然是在is_sticky范围内做的,那个echo太突兀了。

      • 大致
        大致2018-11-16 07:44  回复

        @懿古今还有,page不等于1的时候就不用置顶了吧。

        • 懿古今
          懿古今2018-11-16 08:25  回复

          @大致我个人从不用置顶,这里只是给出了一个方法,如果不等于1的时候不置顶,时候又有人问要全程置顶,所以每个人的需求都不一样,也不能完全照抄,关键是要懂得自己的需求,然后进行DIY。

  3. 闲鱼
    闲鱼 @回复

    置顶文章这个功能感觉蛮好的,用的人也多

    • 懿古今
      懿古今2018-11-21 11:26  回复

      @闲鱼我个人就不太喜欢使用置顶文章,我见过有些站点置顶N篇文章,每次看最新文章都要往下拉很长,这种情况我一般都是关闭网页走人了

  4. 赚钱小站
    赚钱小站 @回复

    nana主题也是一样嘛~

  5. 亚马逊跨境电商erp
    亚马逊跨境电商erp @回复

    新手学习中~感谢分享!