在前端编辑用户配置文件字段

时间:2019-08-09 作者:Beefi1123

我有一个允许用户编辑的用户配置文件字段,但我禁用了后端仪表板/配置文件。如果我只知道meta(dbem\\u paypal\\u帐户),我如何才能做到这一点?我尝试了一些插件,但到目前为止没有成功。

基本上,我想在页面上添加一个文本字段,允许用户更改这个特定字段。我希望这是清楚的。谢谢你,亚尔!

2 个回复
最合适的回答,由SO网友:Ahrengot 整理而成

ACF非常适合管理用户自定义字段,但使用update_user_meta() 保存自定义数据,然后使用$user->get( \'whatever\' );

下面是一个让用户设置和更新推特句柄的表单示例:

<?php 

// Grab the current user (Or redirect to login page)
$user = wp_get_current_user();
if ( !$user->exists() ) {
  wp_safe_redirect(wp_login_url(home_url($_SERVER[\'REQUEST_URI\'])));
  exit;
}


// Check if form was submitted
if ( isset($_POST[\'submitted\']) ) {

  // Verify nonce
  if ( !isset($_POST[\'_wpnonce\']) || !wp_verify_nonce( $_POST[\'_wpnonce\'], \'user_form\' ) ) {
    wp_die("Invalid nonce.");
  }

  update_user_meta( $user->ID, \'twitter_handle\', $_POST[\'twitter_handle\'] );

  // Do a PGP redirect to prevent submitting the same for data multiple times.
  // Read more about PGP here: https://en.wikipedia.org/wiki/Post/Redirect/Get
  wp_safe_redirect( add_query_arg( \'updated\', \'\', home_url($_POST[\'_wp_http_referer\']) ) );
  exit;
}

get_header();

?>

<?php if ( isset($_GET[\'updated\']) ) : ?>
<p>Your twitter handle has been updated!</p>
<?php endif; ?>

<form method="POST">
  <label for="twitter_handle">Twitter Handle</label>
  <input type="text" id="twitter_handle" name="twitter_handle" value="<?php echo esc_attr($user->get("twitter_handle")); ?>">
  <?php wp_nonce_field("user_form"); ?>
  <input type="hidden" name="submitted" value="1">
  <button type="submit">Save changes</button>
</form>

<?php get_footer(); ?>

SO网友:Faye

步骤1:获取用户ID。

假设用户已登录,则必须登录才能保存与其配置文件相关的数据,you can grab their user id 使用get\\u current\\u user\\u id函数。这将是必要的,否则您将无法将某些内容附加到他们的个人资料。

步骤2:使用表单创建前端页面。

我以前使用ACF做过这件事,所以我不能百分之百确定您的设置将如何实现这一点,但从概念上讲,我已经使用ACF向概要文件添加了自定义字段。然后,我向ACF提交了一份前端表单,并使用其save post 将表单字段输入推送到帖子或概要文件的功能。这并不容易——我花了很多时间来做这件事,我必须真正熟悉WordPress用户配置文件的工作原理。

无论如何,我认为您不会找到现成的解决方案,我认为您正在考虑定制开发。如果那不是你的舵手,你会想雇一个WordPress开发人员。

相关推荐