前端UPDATE_POST_META代码段是否显示白屏?

时间:2011-06-29 作者:m-torin

感谢@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>

1 个回复
最合适的回答,由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>

结束

相关推荐