发布时间:2026/11/6 11:53:15 · 栏目:资讯中心
找建站公司怕被坑高价?你不是一个人。很多企业主在搭建官网时,总觉得请人开发成本高,又怕自己不懂技术,结果被各种“隐藏收费”绕得晕头转向。今天就带你一步步搞懂WordPress全局置顶的操作,图解步骤全都有,省下请人开发的钱,自己也能搞定!
在建站过程中,全局置顶是一个非常实用的功能。尤其在企业官网、新闻资讯类网站中,我们经常需要将某些文章或页面始终置顶,让访客第一时间看到。比如:
这些页面一旦被用户点击,就可能成为转化入口,所以必须始终保持在最前面。但WordPress默认的“置顶”功能只能作用于文章(Posts),不能全局置顶页面(Pages)或自定义文章类型(Custom Post Types)。这就需要我们通过代码来实现。
在动手修改代码之前,确保你满足以下条件:
wp-content/themes/当前主题/ 目录下;functions.php、page.php、archive.php 等。wp-config.php 文件中开启调试模式,方便查看错误信息:define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
WordPress默认不支持全局置顶页面,所以第一步是通过代码向主题中添加这个功能。打开你的主题目录下的 functions.php 文件,在最后添加以下代码:
// 全局置顶支持函数
function custom_global_sticky_post($query) {if ($query->is_home() && $query->is_main_query()) {// 获取所有被置顶的文章$sticky = get_option('sticky_posts');// 获取所有被置顶的页面$sticky_pages = get_posts(array('post_type' => 'page','post_status' => 'publish','meta_key' => '_is_global_sticky','meta_value' => '1',));// 将置顶页面ID加入到全局置顶列表中if (!empty($sticky_pages)) {$sticky = array_merge($sticky, wp_list_pluck($sticky_pages, 'ID'));}// 设置查询参数$query->set('post__in', $sticky);$query->set('ignore_sticky_posts', 1);}
}
add_filter('pre_get_posts', 'custom_global_sticky_post');
说明:
meta_key => '_is_global_sticky' 是我们自定义的一个元字段,用来标记某个页面是否为全局置顶;ignore_sticky_posts => 1 是为了防止WordPress默认的置顶文章影响查询结果;post__in 参数可以将多个ID合并查询。为了让用户能方便地设置“全局置顶”状态,我们需要在后台的页面编辑器中添加一个自定义字段。继续在 functions.php 文件中添加以下代码:
// 添加自定义字段到页面编辑器
function add_global_sticky_field($post) {$is_global_sticky = get_post_meta($post->ID, '_is_global_sticky', true);?><div class="custom-field"><label for="global_sticky"><input type="checkbox" name="global_sticky" id="global_sticky" value="1" <?php checked($is_global_sticky, '1'); ?>>设置为全局置顶</label></div><?php
}
add_action('add_meta_boxes', 'add_global_sticky_field');// 保存自定义字段值
function save_global_sticky_field($post_id) {if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;if (!current_user_can('edit_post', $post_id)) return;if (isset($_POST['global_sticky'])) {update_post_meta($post_id, '_is_global_sticky', '1');} else {delete_post_meta($post_id, '_is_global_sticky');}
}
add_action('save_post', 'save_global_sticky_field');
说明:
add_meta_boxes 是WordPress内置的钩子,用来在后台页面编辑器中添加自定义字段;save_post 是保存数据的钩子,用来将用户选择的状态保存到数据库中;完成以上两步之后,你可以创建一个页面,并勾选“设置为全局置顶”选项,然后保存并发布。接着访问网站的首页,看看该页面是否出现在了首页的最上方。
⚠️ 提示:如果你使用的是缓存插件(如WP Super Cache、W3 Total Cache),请清除缓存后刷新页面。
下面是将以上两个功能合并后的完整代码,你可以直接复制到你的 functions.php 文件中:
// 全局置顶支持函数
function custom_global_sticky_post($query) {if ($query->is_home() && $query->is_main_query()) {// 获取所有被置顶的文章$sticky = get_option('sticky_posts');// 获取所有被置顶的页面$sticky_pages = get_posts(array('post_type' => 'page','post_status' => 'publish','meta_key' => '_is_global_sticky','meta_value' => '1',));// 将置顶页面ID加入到全局置顶列表中if (!empty($sticky_pages)) {$sticky = array_merge($sticky, wp_list_pluck($sticky_pages, 'ID'));}// 设置查询参数$query->set('post__in', $sticky);$query->set('ignore_sticky_posts', 1);}
}
add_filter('pre_get_posts', 'custom_global_sticky_post');// 添加自定义字段到页面编辑器
function add_global_sticky_field($post) {$is_global_sticky = get_post_meta($post->ID, '_is_global_sticky', true);?><div class="custom-field"><label for="global_sticky"><input type="checkbox" name="global_sticky" id="global_sticky" value="1" <?php checked($is_global_sticky, '1'); ?>>设置为全局置顶</label></div><?php
}
add_action('add_meta_boxes', 'add_global_sticky_field');// 保存自定义字段值
function save_global_sticky_field($post_id) {if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;if (!current_user_can('edit_post', $post_id)) return;if (isset($_POST['global_sticky'])) {update_post_meta($post_id, '_is_global_sticky', '1');} else {delete_post_meta($post_id, '_is_global_sticky');}
}
add_action('save_post', 'save_global_sticky_field');
原因:
meta_key 没有正确匹配。解决方法:
functions.php 中的代码,确保 meta_key 是 _is_global_sticky;原因:
save_post 钩子;DOING_AUTOSAVE 状态。解决方法:
save_post 钩子。原因:
post_status 不是 publish;post__in 参数没有正确合并置顶文章和页面。解决方法:
get_posts() 中包含 post_type => 'page';post__in 是否正确合并了文章和页面的ID。通过以上步骤,你可以轻松实现WordPress全局置顶功能,无需依赖建站公司,也不用担心被高价“坑”了。关键就在于理解WordPress的查询机制,并通过代码来扩展其功能。
当然,如果你觉得这些代码太复杂,也可以使用插件来实现类似功能。例如:
不过,如果你对代码有基本了解,自己写代码是最省钱的方式,而且也能让你更深入地理解WordPress的工作原理。
如果你正在搭建一个企业官网,或者希望提升网站的用户体验,不妨尝试一下这个“全局置顶”功能。记得在评论区告诉我你的网站用的什么技术栈?评论区聊聊!
本文为尧图网络原创建站知识分享。想针对自身行业获取定制化建站方案?欢迎咨询,资深顾问免费为你出思路。
网页打不开但是微信和qq都可以上避坑指南 备案流程一头雾水,搞不定网站上线,导致网页打不开但微信和QQ却能正常使用?这种情况其实很常见,背后的原因多和服务器、域名、备案、防火墙等环节有关。本文就带你从头梳理一遍问题根源与避坑方法,特别适合那些刚接触网站建设和SEO的新手。…
档案网站建设现状分析怎么选?被黑挂马别慌,这几点搞懂就稳了 网站被黑挂马不知道怎么办?现在档案类网站动不动就遭攻击,不是被挂马就是被篡改,用户数据一塌糊涂,网站运营方完全束手无策。很多单位在搭建档案类网站时,只想着功能够用,忽略了安全防护和后期维护,结果上线没多久就出问题。档案类网站怎么选?这个问题…
新手入门怎么在网站上做旅游推广 从零搭建旅游网站全流程攻略 你不会代码,但想做旅游网站推广?别急,我来帮你拆解。新手入门做旅游网站推广,最大的问题是不知道从哪下手,选什么技术、怎么搭建、怎么优化、怎么推广,一连串问题让你望而却步。其实,只要选对工具,配合SEO基础技巧,哪怕不懂代码也能轻松上手。…
做app护肤网站注意事项:建站拖期问题怎么破 改个需求建站公司拖一周,这事儿不是我一个人遇到,广州的张总去年做护肤网站时,就因为和外包公司沟通不畅,等了整整十天才上线,结果产品上线还被客户投诉加载太慢,用户体验差。你是不是也遇到过这种糟心事?今天咱们不扯虚的, 做app护肤网站注意事项…
镇江房产网站建设多少钱?零代码也能做专业官网 自己不会代码想做网站?别急,镇江房产网站建设其实可以低成本搞定,关键是要选对平台、用对工具。不管是展示楼盘信息、提供在线预约,还是发布房源资讯,一个设计规范、功能清晰的官网是刚需。本文带你一步步看懂镇江房产网站建设的底层逻辑,告诉你多少钱能搞定一个专业官…
5步图解步骤建立门户公司网站,告别模板网站太丑不够用 模板网站太丑不够用,是很多企业主在建站时遇到的最大痛点。不是没预算,而是市面上的模板要么设计老旧,要么功能单一,根本撑不起一个专业门户公司的形象。尤其在2024年,用户体验和视觉设计已经是网站能否留住访客的关键因素。如果你还在用模板网站,那真的该…
上海网站推广方法:从零搭建网站怎么避免被坑 找建站公司怕被坑高价?从零搭建网站又怕踩坑?这事儿我懂,从业十年,见过太多人被套路,尤其在上海这种竞争激烈的市场,建站费用动辄数万,结果网站上线后效果差,推广更是无从谈起。今天从零搭建网站的思路、技术选型、优化方法和避坑指南,全给你讲清楚,别再被忽悠了。…
国外做汽配的网站哪家好?看这5个设计规范就够了 模板网站太丑不够用,尤其是国外做汽配的网站,用户对视觉呈现、信息结构、交互体验都有更高要求。很多企业主选择模板建站,结果发现设计千篇一律,产品展示不清晰,转化率低。那到底国外做汽配的网站哪家好?答案不在模板里,而在设计规范与前端实现上。…
太空为什么要建站?完整流程告诉你该怎么选 模板网站太丑不够用,企业要建站就得从零开始,但流程复杂、技术门槛高、预算难把控,这事儿可不简单。别急,这篇文章带你走一遍【太空为什么要建站】的完整流程,从需求到上线,手把手教你避开坑。 项目背景与需求…