WordPress:如何在header.php中判断指定ID页面的发布状态(非当前)
判断指定ID页面的发布/草稿状态(全站生效)
WordPress确实没有专门的条件标签直接实现这个需求,但可以通过get_post()函数获取指定页面的详细数据,再判断它的状态,这个方法能在全站所有页面/文章的header.php里生效。
具体实现步骤:
- 用
get_post()传入目标页面的ID,获取该页面的对象 - 先检查返回的对象是否有效(避免ID不存在时抛出错误)
- 读取对象的
post_status属性,判断是否为publish(发布)或draft(草稿)
代码示例(放在header.php里):
// 替换成你要检查的页面ID $target_page_id = 123; $target_page = get_post($target_page_id); // 先确认页面存在 if ($target_page) { if ($target_page->post_status === 'publish') { // 页面处于发布状态时执行的代码 echo '<p>目标页面已发布</p>'; } elseif ($target_page->post_status === 'draft') { // 页面处于草稿状态时执行的代码 echo '<p>目标页面是草稿</p>'; } else { // 其他状态(如pending待审核、private私有等) echo '<p>目标页面处于' . esc_html($target_page->post_status) . '状态</p>'; } } else { // 指定ID的页面不存在 echo '<p>未找到目标页面</p>'; }
注意事项:
get_post()默认会启用WordPress的对象缓存,不会频繁查询数据库,性能上无需担心- 记得用
esc_html()处理输出的状态值,避免XSS风险 - 除了
publish和draft,WordPress还有其他帖子状态,可根据需求扩展判断逻辑
内容的提问来源于stack exchange,提问作者Mathew Smith
相关产品推荐
相关产品推荐

