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

2018年11月14日 18:01:30  阅读 182 次 评论 12 条

由于懿古今分享的主题都是用站长推荐来取代置顶文章,所以在编辑文章时,不管是否勾选了置顶文章都不会生效,虽然我自己用不到这个功能,但是也经常有站长问到如何添加置顶功能。今天懿古今就以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张

列表页置顶文章效果图

温馨提示:

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

历史上的今天:

文章标签: ,   ,  
本文地址:https://www.yigujin.cn/1812.html
版权声明:本文为原创文章,版权归 懿古今 所有,欢迎分享本文,转载请保留出处!

相关文章 分类热门分类热评随机文章

发表评论

中国赞表情摊手表情吃瓜表情笑哭表情偷笑表情衰表情汗表情思考表情费解表情抓狂表情晕表情流泪表情疑问表情嘻嘻表情吃惊表情鼓掌表情

表情

阿里云双12嘉年华云服务器优惠价:1核1G100%CPU仅售277元/年,1核1G100%CPU仅售708元/3年,2核4G100%CPU仅售2160元/3年,1核2G10%CPU仅售825元/3年。
  1. 赚钱小站
    赚钱小站 @回复

    nana主题也是一样嘛~

  2. 闲鱼
    闲鱼 @回复

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

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

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

  3. 大致
    大致 @回复

    第一个没调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。

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

    非常赞的总结,精华博客