在我的自定义帖子类型中,我正在使用以下代码构建具有多个input
的多维数组元框:
<?php
$services = get_post_meta($post->ID, 'services', true);
foreach ((array) $services as $service) {
echo '<div class="inside">
<div>
<label>Title</label>
<input type="text" name="service[][title]" value="' . $service['title'] . '">
</div>
<div>
<label>Type</label>
<input type="text" name="service[][type]" value="' . $service['type'] . '">
</div>
<div>
<label>Content</label>
<textarea name="service[][text]">' . $service['text'] . '</textarea>
</div>';
}
exit;
?>
然后,使用以下功能保存数据:
function service_save_meta_box_data($post_id) {
// verify taxonomies meta box nonce
if (!isset($_POST['service_meta_box_nonce']) || !wp_verify_nonce($_POST['service_meta_box_nonce'], basename(__FILE__))) {
return;
}
// return if autosave
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
// Check the user's permissions.
if (!current_user_can('edit_post', $post_id)) {
return;
}
// store custom fields values
// Feature Title
if (isset($_REQUEST['services'])) {
update_post_meta($post_id, 'services', sanitize_text_field($_POST['service']));
}
}
add_action('save_post_service', 'service_save_meta_box_data');
但是,没有在input
中存储和检索数据。
我在哪里做错了?
答案 0 :(得分:0)
您可以使用此代码
模板
<?php /*
Template Name: Customform
*/
get_header()
?>
<form id="Customform">
<div class="inside">
<div>
<label>Title</label>
<input type="text" name="service[][title]" >
</div>
<div>
<label>Type</label>
<input type="text" name="service[][type]">
</div>
<div>
<label>Content</label>
<input type="hidden" name="action" value="get_data">
<textarea name="service[][text]"></textarea>
</div>
<div>
<input type="button" id="test" value="send">
</div>
</form>
<script type="text/javascript">
jQuery(document).ready(function()
{
jQuery("#test").click(function(){
console.log("test");
jQuery.ajax({
type : "POST",
dataType : "json",
url : "<?php echo admin_url('admin-ajax.php'); ?>",
data : jQuery("#Customform").serialize(),
success: function(response) {
alert("Your vote could not be added");
alert(response);
}
});
});
})
</script>
<?php get_footer();?>
Functions.php
function savemyformdata() {
update_post_meta(34, 'services', $_POST['service']);
}
add_action( 'wp_ajax_nopriv_get_data', 'get_data' );
add_action( 'wp_ajax_get_data', 'savemyformdata' );