我正在尝试使用文件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的经历,所以我可能会忽略一些东西。
由于
答案 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中有很多关于这些问题的答案。