Php wordpress中将多个元字段值保存为数组的问题
我使用相同的名称创建自定义字段,在元字段中,我从DB恢复值,并希望将它们保存为模式中的序列化 像这样:Php wordpress中将多个元字段值保存为数组的问题,php,wordpress,metadata,Php,Wordpress,Metadata,我使用相同的名称创建自定义字段,在元字段中,我从DB恢复值,并希望将它们保存为模式中的序列化 像这样: Array ( [job] => 'sdfsdf' [image] => Array ( [attachment_id] => '2121' [url] => 'http://siteurl.com/wp-content/uploads/2016/04/image.jpg'
Array
(
[job] => 'sdfsdf'
[image] => Array
(
[attachment_id] => '2121'
[url] => 'http://siteurl.com/wp-content/uploads/2016/04/image.jpg'
)
[popup_text] => 'A quick brown fox jumps over the lazy dog.'
)
但当我保存这些值时,所有值都恢复为空
下面是我的元字段代码:
global $wpdb;
$dsl_fw_options = get_post_meta($post->ID, 'dsl_fw_options', true);
$dsl_staff_qry = $wpdb->get_row("Select * From ". $wpdb->posts . " Where ID = ".$post->ID);
$dsl_staff_parent = $wpdb->get_row("Select * From ". $wpdb->posts . " Where post_parent = " . $post->ID . " And post_type = 'attachment' And (post_mime_type = 'image/jpeg' Or post_mime_type = 'image/png')");
?>
<table width="100%" cellspacing="2" cellpadding="2" border="0">
<tr>
<td width="20%">
<strong>Job Title</strong>
</td>
<td width="80%">
<input type="text" name="dsl_txt_fw_options['job']" value="<?php echo $dsl_fw_options['job'] ?>" style="width: 50%;">
</td>
</tr>
<tr>
<td>
<input type="text" name="dsl_txt_fw_options['attachment_id']" value="<?php echo $dsl_staff_parent->ID; ?>" style="width: 50%;">
<br>
<input type="text" name="dsl_txt_fw_options['url']" value="<?php echo $dsl_staff_parent->guid; ?>" style="width: 50%;">
<br>
<textarea name="dsl_txt_fw_options['popup_text']"><?php echo $dsl_staff_qry->post_content; ?></textarea>
</td>
</tr>
</table>
当我保存这些值并检查DB中的值时,会得到以下结果:
a:3:{s:3:"job";N;s:5:"image";a:2:{s:13:"attachment_id";N;s:3:"url";N;}s:10:"popup_text";N;}
我不知道我哪里做错了,所以请指导我。首先更改每个输入类型的名称。像
<table width="100%" cellspacing="2" cellpadding="2" border="0">
<tr>
<td width="20%">
<strong>Job Title</strong>
</td>
<td width="80%">
<input type="text" name="dsl_txt_fw_job" value="<?php echo $dsl_fw_options['job ?>" style="width: 50%;">
</td>
</tr>
<tr>
<td>
<input type="text" name="dsl_txt_fw_attachment_id" value="<?php echo $dsl_staff_parent->ID; ?>" style="width: 50%;">
<br>
<input type="text" name="dsl_txt_fw_url" value="<?php echo $dsl_staff_parent->guid; ?>" style="width: 50%;">
<br>
<textarea name="dsl_txt_fw_popup_text"><?php echo $dsl_staff_qry->post_content; ?></textarea>
</td>
</tr>
</table>
之后,可以将这些值转换为所需格式的数组。像
$dsl_val['job'] = $dsl_val_job;
$dsl_val['image'] = array ( 'attachment_id' => $dsl_val_attachment_id,
'url'=> $dsl_val_url );
$dsl_val['popup_text'] = $dsl_val_popup_text;
就这样。:-)
$dsl_val_job = $_POST['dsl_txt_fw_job'];
$dsl_val_attachment_id = $_POST['dsl_txt_fw_attachment_id'];
$dsl_val_url = $_POST['dsl_txt_fw_url'];
$dsl_val_popup_text = $_POST['dsl_txt_fw_popup_text'];
$dsl_val['job'] = $dsl_val_job;
$dsl_val['image'] = array ( 'attachment_id' => $dsl_val_attachment_id,
'url'=> $dsl_val_url );
$dsl_val['popup_text'] = $dsl_val_popup_text;