【问题标题】:WordPress Update User Meta Front End ProfilesWordPress 更新用户元前端配置文件
【发布时间】:2016-08-23 08:21:36
【问题描述】:

我创建了一个插件来创建用户个人资料页面。在此用户可以通过表单更新自定义元信息。这是我的功能:

// Function to edit User Meta

function personalfragebogen_konto_bearbeiten() {

global $current_user;

// Get User Meta

$strasse = get_user_meta( $current_user->ID, '_strasse', true);

// Create Form

<form name="personalfragebogen" action="" method="POST">

    <span class="full" >
        <span class="two_fifth first">
            <h3><?php _e( 'Straße:', 'themesdojo' ); ?></h3>
        </span>

        <span class="three_fifth">
            <input type="text" name="strasse" id="strasse" value="<?php echo $strasse; ?>" class="input-textarea"/>
        </span>
    </span>

<button type="submit">Speichern</button>

</form>

// Get New User Meta

$strasse = $_POST['strasse'];

// Update/Create User Meta

update_user_meta( $current_user->ID, '_strasse', $strasse); 

// Add Hook

add_action( 'personalfragebogen_init', 'personalfragebogen_konto_bearbeiten');

function personalfragebogen_init() {
    do_action('personalfragebogen_init');
}

一切正常,除了一件事。当我提交表单时,数据会保存到数据库中并且页面会刷新。但是现在在我刷新的页面上,表单是空的。再次刷新页面时,将显示数据。这有什么问题?

提前谢谢你!

【问题讨论】:

  • 您应该做的第一件事是在更新元数据之前检查表单是否已发布。使用 isset($_POST['strasse']) 等...然后您应该在输出表单之前运行该更新。

标签: php wordpress frontend user-profile


【解决方案1】:

这样的东西可以工作......

<?php
// Function to edit User Meta
function personalfragebogen_konto_bearbeiten() {

    global $current_user;

    // Get New User Meta
    if(isset($_POST['strasse'])) {
        $strasse = $_POST['strasse'];
        // Update/Create User Meta
        update_user_meta( $current_user->ID, '_strasse', $strasse);     
    else {

        // Get User Meta
        $strasse = get_user_meta( $current_user->ID, '_strasse', true);
    }


?>

    <form name="personalfragebogen" action="" method="POST">

        <span class="full" >
            <span class="two_fifth first">
                <h3><?php _e( 'Straße:', 'themesdojo' ); ?></h3>
            </span>

            <span class="three_fifth">
                <input type="text" name="strasse" id="strasse" value="<?php echo $strasse; ?>" class="input-textarea"/>
            </span>
        </span>

    <button type="submit">Speichern</button>

    </form>
<?php
    }

// Add Hook

add_action( 'personalfragebogen_init', 'personalfragebogen_konto_bearbeiten');

function personalfragebogen_init() {
    do_action('personalfragebogen_init');
}

【讨论】:

  • 非常感谢!现在它按我的意愿工作。 :)
  • 好东西,很高兴听到它:)
猜你喜欢
  • 2021-07-19
  • 2014-01-26
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 2018-09-11
  • 1970-01-01
相关资源
最近更新 更多