在编辑页面时提取已保存到post\\u meta的数字数据(数字)时-例如:
$number = get_post_meta( $post->ID, \'number\', true );
然后在meta\\u查询中将该值与get\\u posts一起使用-例如:
$args = array (
\'posts_per_page\' => 4, // limit ##
\'post_type\' => \'post\',
\'post__not_in\' => array ( $post->ID ), // exclude self ##
\'meta_query\' => array (
array (
\'key\' => \'related_page\',
\'value\' => $number,
)
),
);
$posts = get_posts( $args );
我们是否首先需要键入juggle将检索到的值变为整数,因为它似乎是作为字符串返回的:
var_dump($args)
提供:
array(5) {
["posts_per_page"]=>
int(4)
["post_type"]=>
string(4) "post"
["post__not_in"]=>
array(1) {
[0]=>
int(1387)
}
["meta_query"]=>
array(3) {
[0]=>
array(2) {
["key"]=>
string(15) "related_page"
["value"]=>
string(1) "10"
}
}
}
我应该使用其他
custom field “比较”或“类型”等设置?
最合适的回答,由SO网友:s_ha_dum 整理而成
中的键和值postmeta table 技术上总是字符串。即使你要string
至int
它将被铸造成string
通过查询。尝试:
$args = array (
\'post_type\' => \'post\',
\'meta_query\' => array (
array (
\'key\' => \'related_page\',
\'value\' => 1,
)
),
);
$posts = new WP_Query( $args );
var_dump($posts->request);
你会注意到
CAST(wp_postmeta.meta_value AS CHAR) = \'1\')
在该请求中。
您必须使用type
参数获取将值视为数字的查询。即使有\'type\' => \'NUMERIC\'
您会注意到,该值仍被视为字符串,但由查询强制转换--CAST(wp_postmeta.meta_value AS SIGNED) = \'1\')
.
所有这些都不会真正影响返回的数据。尝试:
update_post_meta(1,\'hal9000\',1);
var_dump(get_post_meta(1,\'hal9000\'));
输入一个整数,返回一个字符串。
PHP对“type”非常宽容,所以在许多情况下,您是否有string
或aint
. 我能想到的最重要的情况是分类。或者,可能是这个网站上出现最多的案例。您需要转换为整数--使用type
如果需要查询进行排序,则排序将按字母顺序,而不是数字顺序,它们并不总是对齐的。