我有一个定制的metabox,有人能帮我一下吗?我有一个自定义的post类型使用它,但不幸的是它没有将数据存储到数据库中。
有什么线索吗?
add_action( \'add_meta_boxes\', \'beef_meta_box_add\' );
function beef_meta_box_add()
{
add_meta_box( \'beef-metabox\', \'Custom Product Settings\', \'beef_meta_box_cb\', \'product\', \'normal\', \'high\' );}
function beef_meta_box_cb()
{
global $post;
$values = get_post_custom( $post->ID );
$price = isset( $values[\'beef_meta_box_price\'] ) ? $values[\'beef_meta_box_price\'] : \'\';
wp_nonce_field( \'beef_meta_box_nonce\', \'meta_box_nonce\' );
?>
<p>
<label for="beef_meta_box_price">price n stuff</label>
<input type="text" name="beef_meta_box_price" id="beef_meta_box_price" value="<?php echo $price; ?>" />
</p>
<?php
}
add_action( \'save_post\', \'beef_meta_box_save\' );
function beef_meta_box_save( $post_id )
{
if( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE ) return;
if( !isset( $_POST[\'meta_box_nonce\'] ) || !wp_verify_nonce( $_POST[\'meta_box_nonce\'], \'beef_meta_box_nonce\' ) ) return;
if( !current_user_can( \'edit_post\' ) ) return;
$allowed = array(
\'a\' => array(
\'href\' => array()
)
);
if( isset( $_POST[\'beef_meta_box_price\'] ) )
update_post_meta( $post_id, \'beef_meta_box_price\', wp_kses( $_POST[\'beef_meta_box_price\'], $allowed ) );
}
SO网友:vancoder
您确定它没有将值保存到DB中吗?也许它只是没有在表单中显示以前保存的值?
$values = get_post_custom( $post->ID );
这是您用来获取元的内容-但这会返回
multi-dimensional array. 因此,在访问beef\\u meta\\u box\\u价格值时,需要使用$值[\'beef\\u meta\\u box\\u price\'][0]。或者,将get\\u post\\u custom(返回帖子的所有meta)替换为
get_post_meta:
$beef_meta_box_price = get_post_custom( $post->ID, \'beef_meta_box_price\', true );
这样,就不会得到数组,只得到字符串。