什么是自定义字段
是的,自定义字段等于post元数据,但请注意,某些元数据仅供内部使用(例如,通常以下划线开头
_edit_lock
.
更详细地了解该功能get_post_custom()
实际上只是一个包装get_post_meta()
: (wp-includes/post.php
第1764行),但要检查输入变量,以确保$post_id
已设置。
function get_post_custom( $post_id = 0 ) {
$post_id = absint( $post_id );
if ( ! $post_id )
$post_id = get_the_ID();
return get_post_meta( $post_id );
}
作为回报,它只是
get_metadata()
.
function get_post_meta( $post_id, $key = \'\', $single = false ) {
return get_metadata(\'post\', $post_id, $key, $single);
}
作为
$key
因为元数据总是空的,所以它总是从
$meta_cache
.
如何知道它是数组还是数组的数组
如果否,返回将始终是一个数组
$key
已设置,这是
get_post_custom()
.
唯一需要检查的是它是否为空,或者是否有条目:
if ( count( $return ) > 0 ) { // whatever you want to do
之后,如果设置了所需的值,则可以检查:
if ( isset( $return[\'yourpostmeta\'] ) ) { // whatever you want to do
为了更直接地回答您的问题:
Every entry in the return array is an array itself. 即使键只有一个值,它也将是$return[\'yourpostmeta\'][0]
. 例如,如果有更多,则只将其添加到数组中$return[\'yourpostmeta\'][1]
或$return[\'yourpostmeta\'][456165]
.
有几件事需要考虑:
如果只需要一个值,请使用$key
在函数中get_post_meta( $post_id, $key, true );
, 因为如果数据被序列化,您将得到一个单一值,或者一个未序列化的数组子数组中的任何条目都不会序列化您始终可以使用isset()
和foreach()
要循环通过所需的键,这将是一个示例功能:
if ( isset( $return[\'yourpostmeta\'] ) ) {
foreach( $return[\'yourpostmeta\'] as $key => $val ) {
echo $val;
}
}
我应该在什么时候选择get\\u post\\u custom()来获取\\u post\\u meta()您可以使用
get_post_custom()
在没有任何参数的循环中,因为它默认为
$post_id
到
get_the_ID()
.
get_post_meta( $post_id )
如果您需要站点中任何位置的特定帖子的所有值,这将非常好。
get_post_meta( $post_id, $key, $single )
非常适合只检索一个特定的自定义值。
其他资源
出于兴趣,您应该阅读
@PieterGoosen answer about custom fields 针对以下问题