感谢@Anu\'scorrection 现在,我有了一个从前端更新\\u post\\u meta的功能。
然而,我的脚本中有些错误,因为使用下面的函数,页面上没有显示任何内容。它只显示一个白色屏幕。如果我取出if ( empty($_POST) ||
页面模板将显示部分,但我对表单所做的任何更改都不会保存。
我错过了什么?
// top of page
if ( empty($_POST) || !wp_verify_nonce($_POST[\'name_of_nonce_field\'],\'name_of_my_action\') )
{ //if fail nonce check, exit script
exit;
}
else :
{
global $post;
$postid = $post->ID;
$data = $_POST[\'priceone\'];
update_post_meta($postid,\'metakey\',$data);
}
endif;
// in single.php
$priceone = get_post_meta($post->ID, \'priceone\', true);
<form method="post" action="">
<?php wp_nonce_field(\'update_drw_postmeta\',\'drw_inventory\'); ?>
<label>This is label</label>
<input type=\'text\' name=\'priceone\' value=\'<?php echo $priceone ?>\' />
<input type=\'submit\' value=\'save\' />
</form>
最合适的回答,由SO网友:Hameedullah Khan 整理而成
将nonce-verify更改为实际验证并更新post-meta,否则什么都不做。但不要在模板顶部使用exit。
// top of page
if ( isset( $_POST[\'drw_inventory\'] ) && wp_verify_nonce($_POST[\'drw_inventory\'],\'update_drw_postmeta\') )
{ //if nonce check succeeds.
global $post;
$postid = $post->ID;
$data = $_POST[\'priceone\'];
update_post_meta($postid,\'metakey\',$data);
}
// in single.php
$priceone = get_post_meta($post->ID, \'priceone\', true);
<form method="post" action="">
<?php wp_nonce_field(\'update_drw_postmeta\',\'drw_inventory\'); ?>
<label>This is label</label>
<input type=\'text\' name=\'priceone\' value=\'<?php echo $priceone ?>\' />
<input type=\'submit\' value=\'save\' />
</form>