我正在尝试在wordpress中编写一个小插件,我有一个带文本输入的小元框和一个用户需要添加信息的单选按钮,我希望保存在帖子元框中的信息将会保存后显示(在当前状态下,输入文本在保存后重置为默认的平板)。
这是相关代码:
add_action( 'add_meta_boxes', 'asset_price' );
function asset_price() {
add_meta_box(
'asset_price',
__( 'asset price', 'myplugin_textdomain' ),
'asset_price_box_content',
'asset',
'normal',
'high'
);
}
function asset_price_box_content( $post ) {
wp_nonce_field( plugin_basename( __FILE__ ), 'asset_price_box_content_nonce' );
echo '<label for="asset_price"></label>
<input type="text" id="asset_price" name="asset_price" placeholder="insert price" />
<input type="radio" name="currency" value="percent" checked="checked">%
<input type="radio" name="currency" value="Dollar">$';
}
add_action( 'save_post', 'asset_price_box_save' );
function asset_price_box_save( $post_id ) {
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
return $post_id;
if ( !wp_verify_nonce( $_POST['asset_price_box_content_nonce'], plugin_basename( __FILE__ ) ) )
return $post_id;
if ( 'page' == $_POST['post_type'] ) {
if ( !current_user_can( 'edit_page', $post_id ) )
return $post_id;
} else {
if ( !current_user_can( 'edit_post', $post_id ) )
return $post_id;
}
$old = get_post_meta($post_id, "asset_price", true);
$new = $_POST["asset_price"];
if ($new && $new != $old) {
$product_price = $_POST['asset_price'];
update_post_meta( $post_id, 'asset_price', $product_price );
} elseif ('' == $new && $old) {
delete_post_meta($post_id, "asset_price", $old);
}
}
提前致谢
答案 0 :(得分:1)
您可以使用get_post_meta()
函数获取元框值,并将其显示在文本框
function asset_price_box_content( $post ) {
$price = get_post_meta($post->ID, "asset_price", true);
wp_nonce_field( plugin_basename( __FILE__ ), 'asset_price_box_content_nonce' );
echo '<label for="asset_price"></label>
<input type="text" id="asset_price" name="asset_price" placeholder="insert price" value="'.$price.'" />
<input type="radio" name="currency" value="percent" checked="checked">%
<input type="radio" name="currency" value="Dollar">$';
}