我想创建一个元框,它应该很好,很容易,但我错了。它涉及到一个旅游自定义后,并加入价格为旅游:WordPress的 - 创建元框和保存
所以最初我创建这个自定义文章类型(这工作):
register_post_type('tours',
array(
'labels' => array(
'name' => __('Tours'),
'singular_name' => __('Tour'),
'add_new' => 'Add New Tour Instance',
'add_new_item' => 'Add New Tour Instance',
'edit' => 'Edit',
'edit_item' => 'Edit Tour Instance',
'new_item' => 'New Tour Instance',
'view' => 'View',
'view_item' => 'View Tour Instance',
'search_items' => 'Search Tour Instances',
'not_found' => 'No Tour Instances found',
'not_found_in_trash' => 'No Tour Instances found in Rubbish',
'parent' => 'Parent Tour Instance'
),
'public' => true,
'supports' => array('title', 'editor', 'thumbnail'),
'taxonomies' => array(''),
//'menu_icon' => plugins_url('images/image.png', __FILE__),
'capability_type' => 'post',
'rewrite' => array("slug" => "tours") // Permalinks format
)
);
然后,我创建盒子本身(这也工程):
add_action('admin_init', 'tour_meta');
function tour_meta() {
add_meta_box(
'tours_meta_box',
'Tour Price',
'display_tours_price_meta_box',
'tours',
'side',
'high'
);
}
现在,整体功能中,然后我试图让细节,并将其保存:
function display_tours_price_meta_box() {
global $post;
// Noncename needed to verify where the data originated
echo '<input type="hidden" name="tourmeta_noncename" id="tourmeta_noncename" value="' .
wp_create_nonce(plugin_basename(__FILE__)) . '" />';
// Get the price data if its already been entered
$price = get_post_meta($post->ID, '_price', true);
echo 'Add the total cost for this tour here, do not include monetary characters like £ or $';
echo '<input type="text" name="_price" ' . $price . '" class="widefat" />';
}
function save_tours_meta($tour_id, $tour) {
if (!wp_verify_nonce($_POST['tourmeta_noncename'], plugin_basename(__FILE__))) {
return $post->ID;
}
// Is the user allowed to edit the post or page?
if (!current_user_can('edit_post', $post->ID))
return $post->ID;
$tour_meta['_price'] = $_POST['_price'];
// Add values of $tour_meta as custom fields
foreach ($tour_meta as $key => $value) {
if($post->post_type == 'revision') return;
$value = implode(',', (array)$value);
if(get_post_meta($post->ID, $key, FALSE)) {
update_post_meta($post->ID, $key, $value);
} else {
add_post_meta($post->ID, $key, $value);
}
if(!$value) delete_post_meta($post->ID, $key);
}
}
add_action('save_post', 'save_tours_meta', 1, 2);
出现实际框,并且信息被回显。但它不能保存。我没有模糊的原因。它必须与我最后的功能有关,但我不明白发生了什么问题。
感谢