WP4.7打破了GET_POST_TYPE还是需要显式整数值?

时间:2016-12-07 作者:Stephen

我刚刚升级到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中一定发生了一些变化,使其不那么宽容

2 个回复
最合适的回答,由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\')不同(现在失败)所以我同意这个改变,尤其是在这种情况下。“”

所以我认为这是一个明确的答案。这种行为已经变得更好了,令人惊讶的是,它以前确实起作用了。

SO网友:Howdy_McGee

据我所知,这是不真实的。让我们从兔子洞里掉下去。。。

首先我们打电话get_post_type()
哪个呼叫get_post() 如果我们not passing some sort of Object
呼叫WP_Post::get_instance() 它进行条件检查以确保通过的内容is_numeric() 对于字符串“numbers”,它将返回true
最后converts the passed number to an integer 并将其返回堆栈。

所有这些都是WordPress 4.7附带的,因此无论问题是什么,都可能比内置的更深层get_post_type() 因为它将同时接受整数和“字符串整数”。

相关推荐