Wordpress管理员自定义字段

时间:2012-05-16 21:22:16

标签: php wordpress

我正在尝试使用文件user-edit.php在wordpress的管理区域添加自定义textarea

我已将textarea添加到正确的位置,并且已经尝试在数据库的wp_usermeta中添加一个新条目,并且它已成功地回显到我的文本框中。

此代码有效

<tr>
    <th><label for="user_ad">Ad Code</label></th>
    <td><textarea name="user_ad" id="user_ad" rows="5" cols="30"><?php echo esc_attr($profileuser->user_ad) ?></textarea>
    </td>   
</tr>

然而......在提交表单时,我无法更新此新textarea的wp_usermeta。

我尝试过使用,

update_user_meta( $user_id, 'user_ad', $_POST['user_ad'] );

但这不起作用,我知道它很接近,因为它会用空白覆盖当前的meta_value。由于某种原因,$ _POST变量没有传递,我无法弄清楚原因。我不是那种使用wordpress的经历,所以我可能会忽略一些东西。

由于

3 个答案:

答案 0 :(得分:3)

此博客文章详细介绍了实现目标的一种方法......

http://justintadlock.com/archives/2009/09/10/adding-and-using-custom-user-profile-fields

我可能误解了你的问题,但听起来非常像你修改了user-edit.php文件。

你真的不想编辑那个页面 - 它是WordPress核心的一部分。升级WordPress时,您所做的任何更改都将被覆盖。

WordPress提供了挂钩,因此您无需编辑文件。不可否认,钩子在这种情况下并不是特别有用,但它仍然是你应该这样做的方式。这就是上面链接的博客文章处理它的方式。

答案 1 :(得分:0)

我怀疑你得到一个空值:

请尝试使用此代码:

if($_POST['user_ad'] != '') {
  $userAd = $_POST['user_ad'];
  update_user_meta( $user_id, 'user_ad', $userAd );
}

然后检查你是否仍然让这个空字段在DB中被覆盖。

答案 2 :(得分:0)

这不是你问题的直接答案,但你暗示你正试图破解核心文件...如果是这样,你肯定需要一个插件。

我最近发现了这个,并且添加所有类型的自定义用户meta非常棒:
Cimy User Extra Fields

如果您确实修改了核心文件,请按照此说明将WordPress文件还原到其原始状态。 http://codex.wordpress.org/Updating_WordPress#Manual_Update

否则,wordpress.stackexchange中有很多关于这些问题的答案。