我创建了多个额外的usermeta字段,并通过后端使用WordPress工作。
但是,我正在尝试创建一个简单的表单,允许用户单击将字段保存到其配置文件的按钮。我一直都在通过StackOverflow,wordpress.stackexchange.com和wordpress.org论坛。人们似乎有这个工作,但我不能这样做。
非常感谢任何人可以帮助我的方式。
这是我的代码,在functions.php中:
function my_function() {
if (is_user_logged_in()) {
global $post;
if (has_badge()) {
$current_user = wp_get_current_user();
$badge_ID = get_post_meta($post->ID, 'badge_id', true);
$badge_check = $current_user->$badge_ID;
$badge_id_1289 = get_user_meta( $current_user->ID, 'badge_id_1289', true);
return '<form name="update_badges" action="#" method="POST">
<fieldset>
<label for="'.$badge_ID.'">Badge Name</label>
<input type="text" id="'.$badge_ID.'" name="'.$badge_ID.'" value="'.$badge_ID.'" />
</fieldset>
<button type="submit">Claim Badge</button>
</form>';
update_user_meta( $current_user->ID, 'badge_id_1289', $_POST['badge_id_1289'] );
}
add_shortcode('subscribe','my_function');
$ badge_ID来自添加此短代码的帖子中的自定义字段,并且我已确认它正常工作(它显示为输入字段中的值,标签中的“for”等)< / p>
我一无所获。表单提交,页面重新加载,但没有任何内容保存到数据库,因此用户的个人资料中没有显示任何内容。
知道我还需要做什么,另外还有update_user_meta,或者这是一个短代码问题?
答案 0 :(得分:0)
@brasofilo是正确的,问题是我在<{em> user_update_meta
之前调用了return
。这是正确的版本:
function my_function() {
if (is_user_logged_in()) {
global $post;
if (has_badge()) {
$current_user = wp_get_current_user();
$badge_ID = get_post_meta($post->ID, 'badge_id', true);
$badge_check = $current_user->$badge_ID;
$badge_id_1289 = get_user_meta( $current_user->ID, 'badge_id_1289', true);
update_user_meta( $current_user->ID, 'badge_id_1289', $_POST['badge_id_1289'] );
return '<form name="update_badges" action="#" method="POST">
<fieldset>
<label for="'.$badge_ID.'">Badge Name</label>
<input type="text" id="'.$badge_ID.'" name="'.$badge_ID.'" value="'.$badge_ID.'" />
</fieldset>
<button type="submit">Claim Badge</button>
</form>';
}
add_shortcode('subscribe','my_function');