每个post元键可以有多个值。因此,默认情况下,可以将值作为数组获取;第一个条目(0
) 是最老的。
get_post_custom()
获取所有元键及其值。您可以通过以下方式简化代码:
$price = get_post_meta( $post->ID, \'price\', TRUE );
$comake = get_post_meta( $post->ID, \'coMake\', TRUE );
当的最后一个参数
get_post_meta()
是
TRUE
, WordPress将返回单个值:给定键的post meta值中的第一个条目。
第一次呼叫get_post_meta()
将获取和缓存all 该post ID的元数据在后台显示,因此以后的调用不会导致额外的数据库查询。
例如,我们创建一个名为color
并用三个不同的值填充one 邮递然后我们用钥匙做同样的事情age
.
add_action( \'wp_loaded\', function() {
foreach ( array ( \'blue\', \'red\', \'yellow\' ) as $color )
add_post_meta( 561, \'color\', $color, FALSE );
foreach ( array ( \'14\', \'40\', \'104\' ) as $age )
add_post_meta( 561, \'age\', $age, FALSE );
});
最后一个参数
FALSE
告诉WordPress不要使此元键唯一,而是允许一个键有多个值。
我们的postmeta
表如下所示:
每行有一个唯一的meta_id
, 但每个post_id
可以有多个meta_key
s、 以及每个meta_key
可以有多个meta_value
s
现在,让我们获取post 561的所有自定义值:
add_action( \'shutdown\', function(){
$custom = get_post_custom( 561 );
print \'<pre>\' . esc_html( var_export( $custom, TRUE ) ) . \'</pre>\';
});
结果:
array (
\'_edit_last\' =>
array (
0 => \'1\',
),
\'_edit_lock\' =>
array (
0 => \'1367617428:1\',
),
\'color\' =>
array (
0 => \'blue\',
1 => \'red\',
2 => \'yellow\',
),
\'age\' =>
array (
0 => \'14\',
1 => \'40\',
2 => \'104\',
),
)
_edit_last
和
_edit_lock
是WordPress的内部构件,我们暂时忽略了这一点。请注意,虽然只有一个值,但我们也从数组中获取这些值
color
和
age
数组与所有post meta值类似
$custom[\'color\'][0]
是
blue
.
现在我们用get_post_meta()
:
add_action( \'shutdown\', function(){
$color = get_post_meta( 561, \'color\' );
print \'<pre>\' . esc_html( var_export( $color, TRUE ) ) . \'</pre>\';
});
结果:
array (
0 => \'blue\',
1 => \'red\',
2 => \'yellow\',
)
我们这里只得到了一部分元价值。
$color[0]
仍然是
blue
. 在幕后,WordPress已经获取了所有自定义值,因此
age
将从缓存中提供
在性能方面
get_post_custom()
和
get_post_meta()
都是平等的。
最后一次尝试:使用get_post_meta()
作为单个值。
add_action( \'shutdown\', function(){
$color = get_post_meta( 561, \'color\', TRUE );
print \'<pre>\' . esc_html( var_export( $color, TRUE ) ) . \'</pre>\';
});
结果:
blue
.
WordPress已经完成了您在代码中所做的工作:它接受了数组键0
并以字符串形式返回值。
这是最具可读性的选项,可用于编写易于理解的代码。