我刚刚升级到WP 4.7,突然,使用get\\u post\\u类型($id)的代码停止返回任何内容,也没有抛出错误。
在尝试了一些事情之后,我发现如果我将代码从
get_post_type($id)
至
get_post_type(intval($id))
但我在文档中找不到任何关于WP突然需要显式整数值的内容。还有人看到这个吗?
UPDATE
因此,使用trim而不是intval也可以。
get_post_type(trim($id))
并检查$id
(preg_match(\'/\\s/\',$id))
显示它有一个空间。但奇怪的是,这在WP 4.6中运行得很好,所以在WP 4.7中一定发生了一些变化,使其不那么宽容
最合适的回答,由SO网友:Stephen 整理而成
根据WP的开发人员(https://core.trac.wordpress.org/ticket/39164):
“这是对4.7中get\\u post()的有意更改-传递无效参数之前可能会返回一个结果,但它可能是一个不正确的资源,例如,一个值被转换为数字1并从错误的post中提取。get\\u post(123)与get\\u post(\'123\')相同,但与get\\u post(\'123\')不同(现在失败)所以我同意这个改变,尤其是在这种情况下。“”
所以我认为这是一个明确的答案。这种行为已经变得更好了,令人惊讶的是,它以前确实起作用了。