搜索
首页CMS教程WordPressWordPress分类与标签等存档页怎么实现置顶

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
wordpress怎么加评论框wordpress怎么加评论框Apr 20, 2025 pm 12:15 PM

在 WordPress 网站上启用评论功能,可以为访客提供参与讨论和分享反馈的平台。为此,请按照以下步骤操作:启用评论:在仪表盘中,导航至“设置”>“讨论”,并选中“允许评论”复选框。创建评论表单:在编辑器中,单击“添加块”并搜索“评论”块,将其添加到内容中。自定义评论表单:通过设置标题、标签、占位符和按钮文本来定制评论块。保存更改:单击“更新”以保存评论框并将其添加到页面或文章中。

wordpress怎么复制子站wordpress怎么复制子站Apr 20, 2025 pm 12:12 PM

如何复制 WordPress 子站?步骤:在主站创建子站。在主站克隆子站。将克隆导入目标位置。更新域名(可选)。分开插件和主题。

wordpress怎么写页头wordpress怎么写页头Apr 20, 2025 pm 12:09 PM

在WordPress中创建自定义页头的步骤如下:编辑主题文件“header.php”。添加您的网站名称和描述。创建导航菜单。添加搜索栏。保存更改并查看您的自定义页头。

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

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

wordpress怎么上传源码wordpress怎么上传源码Apr 20, 2025 pm 12:03 PM

可以通过 WordPress 安装 FTP 插件,配置 FTP 连接,然后使用文件管理器上传源码。步骤包括:安装 FTP 插件、配置连接、浏览上传位置、上传文件、检查上传成功。

wordpress代码怎么复制wordpress代码怎么复制Apr 20, 2025 pm 12:00 PM

如何复制 WordPress 代码?从管理界面复制:登录 WordPress 网站,导航到目标位置,选择代码并按 Ctrl C (Windows)/Command C (Mac) 复制代码。从文件复制:使用 SSH 或 FTP 连接到服务器,导航到主题或插件文件,选择代码并按 Ctrl C (Windows)/Command C (Mac) 复制代码。

wordpress出现错误怎么办wordpress出现错误怎么办Apr 20, 2025 am 11:57 AM

WordPress 错误解决指南:500 内部服务器错误:禁用插件或检查服务器错误日志。404 未找到页面:检查 permalink 并确保页面链接正确。白屏死机:增加服务器 PHP 内存限制。数据库连接错误:检查数据库服务器状态和 WordPress 配置。其他技巧:启用调试模式、检查错误日志和寻求支持。预防错误:定期更新 WordPress、仅安装必要插件、定期备份网站和优化网站性能。

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

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

See all articles

热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

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

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

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

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)