2

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

我已经在正确的位置添加了 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>

但是...提交表单时,我无法更新此新文本区域的 wp_usermeta。

我试过用,

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

但这不起作用,我知道它很接近,因为它用空白覆盖了当前的 meta_value。由于某种原因,$_POST 变量没有被传递,我不知道为什么。我对wordpress没有那种经验,所以我可能会忽略一些东西。

谢谢

4

3 回答 3

3

这篇博文详细介绍了实现您所追求的一种方法......

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

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

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

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

于 2012-05-16T21:35:08.113 回答
0

我怀疑你得到一个空值:

试试这个代码:

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

然后检查您是否仍然让这个空字段在数据库中被覆盖。

于 2012-05-16T21:33:55.363 回答
0

这不是您问题的直接答案,但您暗示您正在尝试对核心文件进行黑客攻击......如果是这样,您肯定需要一个插件。

我最近发现了这个,它非常适合添加各种自定义用户元:
Cimy User Extra Fields

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

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

于 2012-05-17T00:00:43.573 回答