我在new-post
页面上添加了一个元框,允许用户添加照片并撰写描述。见附图。
所以,现在我要保存这些数据。正如您所看到的,照片本身也有自己的元数据(标题,URL和描述)因此,将这些值存储在多维数组中会更有意义。
$photo_meta_data = array(
'photo1' => array('title'=>'aaa', 'url'=>'http://..', 'desc'=>'ffff'),
'photo2' => array('title'=>'aaa', 'url'=>'http://..', 'desc'=>'ffff'),
'photo3' => array('title'=>'aaa', 'url'=>'http://..', 'desc'=>'ffff'),
)
但是,怎么做?这是我在metabox中遇到的代码。
if( isset( $_POST[ 'photo-title1' ] ) ) {
update_post_meta( $post_id, 'photo-title1', sanitize_text_field( $_POST[ 'photo-title1' ] ) );
}
我只是将字段数据保存为单个值。
目前我正在这样的wp_postmeta
表中存储值......
PostId MetaKey Value
175 photo-title1 .....
175 photo-URL1 .....
175 photo-desc1 .....
175 photo-title2 .....
175 photo-URL2 .....
175 photo-desc2 .....
176 photo-title1 .....
176 photo-URL1 .....
176 photo-desc1 .....
那么,wp_postmeta
表的大量数据不是吗?
有更有条理的方式吗?我应该为这些自定义元数据使用单独的表吗?或者就像我做的那样?
谢谢!
答案 0 :(得分:2)
您应该将所有元保存在一个多维数组中,如下所示:
// Save the meta value as one multi dimensional array, like below
$photo_data = array(
array(
'title' => 'Name here',
'url' => 'http://example.com',
'description' => 'My description here...'
),
array(
'title' => 'New name here',
'url' => 'http://example.com',
'description' => 'New description here...'
)
);
// Save it using either update_post_meta() or add_post_meta()
update_post_meta( $post_id, 'photo_data', $photo_data );
// Reference it or get it like below later on:
$photo_data = get_post_meta( $post_id, 'photo_data', true );
// Get the values like below...
echo $photo_data[0]['name'];
echo $photo_data[0]['url'];
echo $photo_data[0]['description'];
在将post meta保存到WP数据库之前,请记住循环访问数据,在WP中使用适当的卫生功能。
https://codex.wordpress.org/Validating_Sanitizing_and_Escaping_User_Data
答案 1 :(得分:0)
将数组存储在1个metakey中,如下所示:
[
"photo1" => [
"title" => ...
"URL" => ...
"data" => ...
],
"photo2" => [
"title" => ...
"URL" => ...
"data" => ...
],
]