基本上,您不能同时显示按钮和更新元。这必须在两个单独的请求中完成,如下所示:
在任何需要的地方显示按钮。它需要是一个提交到同一页面的表单(或者是对另一个URL的ajax调用,但现在让我们保持简单)读取表单中发布的值这里有一个简单的实现来实现这一点,但它可以改进。
function wpses_385303_change_validate() {
if (is_user_logged_in()) {
$user_id = get_current_user_id();
//If the form was posted (ie. the button was clicked) in a previous request
if (isset($_POST[\'validate_user\'])) {
if ($_POST[\'validate_user\'] == $user_id) {//A little bit of security
if (update_user_meta( $user_id, \'User_meta_change\', \'validated\' )) {
return "<div class=\'user_updated\'>Updated!</div>";
} else {
return "<div class=\'user_updated error\'>Not Updated!</div>";
}
}
}
//Show the form
return "<form method=\'post\'>
<input type=\'hidden\' name=\'validate_user\' value=\'$user_id\' />
<input type=\'submit\' value=\'Validate\' />
</form>";
}
}
add_shortcode(\'change_validate\',\'wpses_385303_change_validate\');