之前有网友跟我要这个功用,真实是忙于生计不断没有时间写这方面的文章,最近这两天闲暇下来总算是有些时间了,其实这个功用说简单也简单,根本思绪就是经过 get_option(‘sticky_posts’) 从数据库中获取到设置置顶的文章,然后想方法在首页显现出来。DUX4.0版本主题作者曾经更新了这个功用,我也就偷个懒直接将这个功用抽离出来给大家分享出来,在此感激主题作者的代码。
还是要提示一下,主题修正前请务必备份一下文件以防误操作惹起的网站解体。下面说一下详细的完成办法。
添加后台设置按钮
主题后台选项的设置之前曾经说过很屡次了,并且我还写了 浅淡 WordPress 主题选项框架 Options Framework 这篇文章详细说了下,这里就不多说了,我们直接将下面的代码丢在主题的 options.php 文件中去就好:
$multicheck_nums = array( '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5' ); $options[] = array( 'name' => __('首页最新发布显现置顶文章', 'haoui').' (v4.0+)', 'id' => 'home_sticky_s', 'type' => "checkbox", 'std' => false, 'desc' => __('开启', 'haoui')); $options[] = array( 'id' => 'home_sticky_n', 'options' => $multicheck_nums, 'desc' => __('置顶文章显现数目', 'haoui'), 'type' => 'select');
留意,之前我们固然也修正过 options.php ,但是没有设置过数组,这里为了后面设置便当添加了个数组 $multicheck_nums ,这个数组一定不能丢,否则会报错!
index.php文件修正
值得留意的是DUX4.0之前的版本首页提供了首页不显现“某分类”或“某ID”下文章的功用,该功用相关代码在 index.php 文件中,详细代码如下:
<?php $args = array( 'ignore_sticky_posts' => 1, 'paged' => $paged ); if( _hui('notinhome') ){ $pool = array(); foreach (_hui('notinhome') as $key => $value) { if( $value ) $pool[] = $key; } $args['cat'] = '-'.implode($pool, ',-'); } if( _hui('notinhome_post') ){ $pool = _hui('notinhome_post'); $args['post__not_in'] = explode("\n", $pool); } query_posts($args); ?> <?php get_template_part( 'excerpt' ); ?>
DUX主题4.0之后由于作者又参加了“首页能否显现置顶文章”的判别,所以我们需求将上述代码修正为如下这样:
<?php $pagenums = get_option( 'posts_per_page', 10 ); $offsetnums = 0; $stickyout = 0; if( _hui('home_sticky_s') && in_array(_hui('home_sticky_n'), array('1','2','3','4','5')) && $pagenums>_hui('home_sticky_n') ){ if( $paged <= 1 ){ $pagenums -= _hui('home_sticky_n'); $sticky_ids = get_option('sticky_posts'); rsort( $sticky_ids ); $args = array( 'post__in' => $sticky_ids, 'showposts' => _hui('home_sticky_n'), 'ignore_sticky_posts' => 1 ); query_posts($args); get_template_part( 'excerpt' ); }else{ $offsetnums = _hui('home_sticky_n'); } $stickyout = get_option('sticky_posts'); } $args = array( 'post__not_in' => array(), 'ignore_sticky_posts' => 1, 'showposts' => $pagenums, 'paged' => $paged ); if( $offsetnums ){ $args['offset'] = $pagenums*($paged-1) - $offsetnums; } if( _hui('notinhome') ){ $pool = array(); foreach (_hui('notinhome') as $key => $value) { if( $value ) $pool[] = $key; } if( $pool ) $args['cat'] = '-'.implode($pool, ',-'); } if( _hui('notinhome_post') ){ $pool = _hui('notinhome_post'); $args['post__not_in'] = explode("\n", $pool); } if( $stickyout ){ $args['post__not_in'] = array_merge($stickyout, $args['post__not_in']); } query_posts($args); get_template_part( 'excerpt' ); _moloader('mo_paging'); ?>
还需求阐明一下的是,这里主题作者还顺便添加上了首页文章显现数量的设置 $pagenums = get_option( ‘posts_per_page’, 10 ); 该选项的设置不是在DUX主题设置中,而是在 WordPress 后台“/设置/阅读/博客页面至多显现”处停止设置。
excerpt.php文件修正
上面 index.php 文件的修正只是调取了数据库中设置的置顶文章并在首页做了个判别,但是我们发现固然这样的确使得置顶文章显现在了首页文章列表的顶部,但是并没有什么标识显现这就是置顶文章,所以我们要为其添加上“置顶”的标识,详细添加办法可参照我之前写的 DUX主题为新发布的文章添加NEW图标 ,办法相似,这里将以下代码添加到主题excerpt.php 文件的 echo ‘</header>’; 代码之上就好。
if( _hui('home_sticky_s') && is_sticky() ){ echo '<span class="sticky-icon">置顶</span>'; }
在 excerpt.php 文件中找到 _moloader(‘mo_paging’); 删除之。
添加CSS款式
最后将以下代码添加到 main.css 文件中,对“置顶”文字停止美化。
.sticky-icon{ line-height: 1; padding: 4px 4px 3px; font-size: 12px; background-color: #FF5E52; color: #fff;border-radius: 2px; display: inline-block; position: relative; margin-left: 5px; top: -2px; }
至此,DUX主题首页添加置顶文章显现完成。
[qgg_pink]2018年03月31日更新:发现分类页面底局部页丧失,将上述修正方式更改为删除上述index.php修正代码中 _moloader(‘mo_paging’); 保存excerpt.php的_moloader(‘mo_paging’);
[/qgg_pink]
感谢您的来访,获取更多精彩文章请收藏本站。
![](https://www.gyzsq.com/wp-content/uploads/2022/07/9259adea4619.gif)
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
![头像](/wp-content/themes/zibll/img/avatar-default.png)
- 最新
- 最热
只看作者