get_the_ID()
已损坏。
function get_the_ID() {
return get_post()->ID;
}
它尝试使用成员
ID
在返回
post
对象有时:
/*
* @return WP_Post|null WP_Post on success or null on failure
*/
function get_post( $post = null, $output = OBJECT, $filter = \'raw\' ) {
get_posts()
可以返回
NULL
, 和
NULL
没有成员
ID
, 因为它不是一个对象。
没有全局post
404页上的对象。因为$post
是一个全局变量,可以在任何地方删除,甚至可以在单个页面上删除。
所以当你使用get_the_ID()
, 你必须测试post
对象
if ( get_post() )
{
$id = get_the_ID();
// do something
}
这里有两个教训可以学习:
千万不要相信WordPress API。阅读代码,了解其局限性避免在自己的代码中使用全局变量。将每一个视为严重的bug,并立即将其清除