求助:从template-contact.php获取当前页面ID显示错误问题
搞定template-contact.php页面ID获取错误的问题
嘿,我来帮你解决这个页面ID不对的问题!你拿到85而不是实际的96,大概率是当前用的ID获取逻辑没精准定位到目标页面,下面给你几个实用的解决办法:
方法1:用get_queried_object_id()精准拿当前页面ID
这个函数是WordPress里获取当前显示页面ID的黄金方案,不管你的模板是不是被多个页面复用,它都能准确返回当前访问页面的ID。把你原来的ID获取代码替换成:
$correct_page_id = get_queried_object_id(); // 先测试输出确认结果 echo "当前页面ID:" . $correct_page_id;
测试一下,应该就能拿到96了,之后用这个ID去调取元数据就行。
方法2:通过页面slug精准定位
如果你确定联系页面的固定链接slug是不变的(比如叫contact),可以直接通过slug获取ID,完全不会受模板复用的影响:
$contact_page = get_page_by_path('contact'); if ($contact_page) { $correct_page_id = $contact_page->ID; }
只要slug没改,这个方法永远能拿到正确的页面ID。
方法3:检查模板的页面关联情况
有时候可能你的template-contact.php被多个页面设置成了模板,比如ID85的页面也用了这个模板?去后台的“页面”列表里,找到ID96的页面,确认它的模板选项是不是选的Contact Template,同时看看ID85的页面是不是也绑定了同一个模板,避免访问错了页面。
方法4:直接调取当前页面元数据(不用单独拿ID)
如果你只是想获取当前页面的元数据,其实可以一步到位,不用单独获取ID,直接用下面的代码:
// 把'your_meta_key'换成你要调取的元数据键名 $page_meta = get_post_meta(get_queried_object_id(), 'your_meta_key', true);
这样直接用get_queried_object_id()作为参数,就能精准拿到当前页面的元数据了。
记得先测试输出ID确认是96之后,再去调取元数据,这样就不会出错啦!
内容的提问来源于stack exchange,提问作者Anand Siddharth
相关产品推荐
相关产品推荐

