首页 CMS教程 &#&按 WordPress分类与标签等存档页怎么实现置顶

WordPress分类与标签等存档页怎么实现置顶

Dec 28, 2019 am 09:52 AM
wordpress

WordPress分类与标签等存档页怎么实现置顶

WordPress分类与标签等存档页怎么实现置顶?

本文实例讲述了WordPress分类与标签等存档页实现置顶的方法。分享给大家供大家参考。具体分析如下:

推荐:《wordpress教程

在wordpress中默认能置顶文章就是只有首页了,如果我们希望分类/标签等存档页也能置顶文章我们需要二次开发.

现在参考wp-includes/query.php中首页置顶的代码,稍微修改一下,可以让分类页、标签页、作者页和日期页等存档页面也能像首页一样在顶部显示其范围内的置顶文章,把下面的代码放到当前主题下的functions.php中就可以了.

代码如下:

add_filter('the_posts', 'putStickyOnTop' ); 
function putStickyOnTop( $posts ) { 
if(is_home() || !is_main_query() || !is_archive()) 
return $posts; 
global $wp_query; 
$sticky_posts = get_option('sticky_posts'); 
if ( $wp_query->query_vars[&#39;paged&#39;] <= 1 && is_array($sticky_posts) && !emptyempty($sticky_posts) && !get_query_var(&#39;ignore_sticky_posts&#39;) ) { $stickies1 = get_posts( array( &#39;post__in&#39; => $sticky_posts ) ); 
foreach ( $stickies1 as $sticky_post1 ) { 
// 判断当前是否分类页 
if($wp_query->is_category == 1 && !has_category($wp_query->query_vars[&#39;cat&#39;], $sticky_post1->ID)) { 
// 去除不属于本分类的文章 
$offset1 = array_search($sticky_post1->ID, $sticky_posts); 
unset( $sticky_posts[$offset1] ); 
} 
if($wp_query->is_tag == 1 && has_tag($wp_query->query_vars[&#39;tag&#39;], $sticky_post1->ID)) { 
// 去除不属于本标签的文章 
$offset1 = array_search($sticky_post1->ID, $sticky_posts); 
unset( $sticky_posts[$offset1] ); 
} 
if($wp_query->is_year == 1 && date_i18n(&#39;Y&#39;, strtotime($sticky_post1->post_date))!=$wp_query->query[&#39;m&#39;]) { 
// 去除不属于本年份的文章 
$offset1 = array_search($sticky_post1->ID, $sticky_posts); 
unset( $sticky_posts[$offset1] ); 
} 
if($wp_query->is_month == 1 && date_i18n(&#39;Ym&#39;, strtotime($sticky_post1->post_date))!=$wp_query->query[&#39;m&#39;]) { 
// 去除不属于本月份的文章 
$offset1 = array_search($sticky_post1->ID, $sticky_posts); 
unset( $sticky_posts[$offset1] ); 
} 
if($wp_query->is_day == 1 && date_i18n(&#39;Ymd&#39;, strtotime($sticky_post1->post_date))!=$wp_query->query[&#39;m&#39;]) { 
// 去除不属于本日期的文章 
$offset1 = array_search($sticky_post1->ID, $sticky_posts); 
unset( $sticky_posts[$offset1] ); 
} 
if($wp_query->is_author == 1 && $sticky_post1->post_author != $wp_query->query_vars[&#39;author&#39;]) { 
// 去除不属于本作者的文章 
$offset1 = array_search($sticky_post1->ID, $sticky_posts); 
unset( $sticky_posts[$offset1] ); 
} 
} 
$num_posts = count($posts); 
$sticky_offset = 0; 
// Loop over posts and relocate stickies to the front. 
for ( $i = 0; $i < $num_posts; $i++ ) { 
if ( in_array($posts[$i]->ID, $sticky_posts) ) { 
$sticky_post = $posts[$i]; 
// Remove sticky from current position 
array_splice($posts, $i, 1); 
// Move to front, after other stickies 
array_splice($posts, $sticky_offset, 0, array($sticky_post)); 
// Increment the sticky offset. The next sticky will be placed at this offset. 
$sticky_offset++; 
// Remove post from sticky posts array 
$offset = array_search($sticky_post->ID, $sticky_posts); 
unset( $sticky_posts[$offset] ); 
} 
} 
// If any posts have been excluded specifically, Ignore those that are sticky. 
if ( !emptyempty($sticky_posts) && !emptyempty($wp_query->query_vars[&#39;post__not_in&#39;] ) ) 
$sticky_posts = array_diff($sticky_posts, $wp_query->query_vars[&#39;post__not_in&#39;]); 
// Fetch sticky posts that weren&#39;t in the query results 
if ( !emptyempty($sticky_posts) ) { 
$stickies = get_posts( array( 
&#39;post__in&#39; => $sticky_posts, 
&#39;post_type&#39; => $wp_query->query_vars[&#39;post_type&#39;], 
&#39;post_status&#39; => &#39;publish&#39;, 
&#39;nopaging&#39; => true 
) ); 
foreach ( $stickies as $sticky_post ) { 
array_splice( $posts, $sticky_offset, 0, array( $sticky_post ) ); 
$sticky_offset++; 
} 
} 
} 
return $posts; 
}
登录后复制

代码说明:

1、如果你想让存档页也都显示全部置顶文章,那么就删掉11-43行的代码;

2、如果不想在某分类页显示置顶文章,将第 3 行的

代码如下:

if( 
//改成: 
// abc是分类名称 
if ( is_category( &#39;abc&#39; ) ||
登录后复制

3、如果不想某标签页显示置顶文章,将第 3 行的代码

代码如下:

if( 
//改成: 
// abc是标签名称 
if ( is_tag( &#39;abc&#39; ) ||
登录后复制

4、如果不想某作者页显示置顶文章,将第 3 行的

代码如下:

if( 
//改成: 
// abc是作者昵称 
if ( is_author( &#39;abc&#39; ) ||
登录后复制

5、以上代码只对主循环有效,如果你在存档页使用WP_Query或query_posts来获取文章列表,又像让这些列表顶部显示置顶文章,可以把第3行代码中的以下代码删掉(注意:可能会导致文章显示数量跟你设置的不一样):

代码如下:

代码如下:

|| !is_main_query()
登录后复制

置顶样式:如果你想给置顶文章添加样式,将以下代码添加到functions.php中,会给置顶文章添加一个名为 sticky 的class,具体的css代码,再自行自定义:

代码如下:

add_filter(&#39;post_class&#39;, &#39;addStickyClass&#39; ,10,3 ); 
function addStickyClass( $classes, $class, $post_id ){ 
if( is_sticky() && is_category() && !isset( $classes[&#39;sticky&#39;] ) ){ 
$classes[] = &#39;sticky&#39;; 
} 
return $classes; 
}
登录后复制

希望本文所述对大家的WordPress建站有所帮助。

以上是WordPress分类与标签等存档页怎么实现置顶的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

wordpress编辑日期怎么取消 wordpress编辑日期怎么取消 Apr 20, 2025 am 10:54 AM

WordPress 编辑日期可以通过三种方法取消:1. 安装 Enable Post Date Disable 插件;2. 在 functions.php 文件中添加代码;3. 手动编辑 wp_posts 表中的 post_modified 列。

wordpress怎么添加评论 wordpress怎么添加评论 Apr 20, 2025 am 11:42 AM

在 WordPress 中添加评论功能步骤如下:启用评论:勾选“允许评论”以启用特定文章或所有文章的评论。设置评论选项:自定义评论审批、分页、嵌套评论等设置。添加评论表单:使用提供的代码将评论表单添加到所需位置。显示评论:使用提供的代码显示已提交的评论。回复评论:通过“回复”链接回复单个评论,或使用批量操作回复多个评论。管理评论:在“评论”选项卡中查看、删除、批准和标记评论。

wordpress评论怎么显示 wordpress评论怎么显示 Apr 20, 2025 pm 12:06 PM

WordPress 网站中启用评论功能:1. 登录管理面板,转到 "设置"-"讨论",勾选 "允许评论";2. 选择显示评论的位置;3. 自定义评论表单;4. 管理评论,批准、拒绝或删除;5. 使用 &lt;?php comments_template(); ?&gt; 标签显示评论;6. 启用嵌套评论;7. 调整评论外形;8. 使用插件和验证码防止垃圾评论;9. 鼓励用户使用 Gravatar 头像;10. 创建评论指

wordpress好用的产品注册插件推荐 wordpress好用的产品注册插件推荐 Apr 20, 2025 am 08:15 AM

没有完美的WordPress产品注册插件,选择应根据实际需求和网站规模。推荐插件包括:MemberPress:功能强大但价格较高,配置复杂Restrict Content Pro:专注内容限制和会员管理,性价比高Easy Digital Downloads:销售数字产品,用户注册为附加功能

WordPress网站已上线但是搜不到 WordPress网站已上线但是搜不到 Apr 20, 2025 am 09:00 AM

WordPress 网站无法在搜索引擎中被找到的原因:1. 索引问题;2. 内容问题;3. 网站技术问题;4. 链接问题;5. 其他问题,如地域限制、网站名称和社交媒体存在。

wordpress网站账号登录 wordpress网站账号登录 Apr 20, 2025 am 09:06 AM

登录 WordPress 网站账号的步骤:访问登录页面:输入网站网址加上 "/wp-login.php"。输入用户名和密码。点击“登录”。验证两步验证(可选)。成功登录后,您将看到网站仪表盘。

wordpress中如何定位图片 wordpress中如何定位图片 Apr 20, 2025 am 10:03 AM

WordPress 提供了以下方式定位图像:图像识别号:在媒体库中悬停图像以显示识别号 (ID)。图像标题:在“搜索媒体”字段中输入标题以定位图像。图像 URL:在图像编辑器中,右上角显示图像 URL。位置标识符:在区块设置的“高级”选项卡中,查找指定图像位置的“CSS 类”字段中的位置标识符。

wordpress怎么关闭评论 wordpress怎么关闭评论 Apr 20, 2025 am 11:54 AM

如何在 WordPress 中关闭评论?特定文章或页面:在编辑器中取消选中“讨论”下的“允许评论”。整个网站:在“设置”-&gt;“讨论”中取消选中“允许发表评论”。使用插件:安装 Disable Comments 等插件禁用评论。编辑主题文件:通过编辑 comments.php 文件移除评论表单。自定义代码:使用 add_filter() 函数禁用评论。

See all articles