Wordpress 管理员自定义字段

Posted

技术标签:

【中文标题】Wordpress 管理员自定义字段【英文标题】:Wordpress Admin Custom Field 【发布时间】:2012-05-16 21:22:15 【问题描述】:

我正在尝试使用文件 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 的经验,所以我可能会忽略一些东西。

谢谢

【问题讨论】:

【参考方案1】:

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

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

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

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

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

【讨论】:

【参考方案2】:

我怀疑你得到一个空值:

试试这个代码:

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

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

【讨论】:

在试图找出它为什么不起作用时,我已经尝试过类似的方法。仍然没有运气,即使我使用您的代码并将某些内容输入到 textarea 中,也没有任何内容提交到 wp_usermeta 表 这证明$_POST['user_ad'] 是空的。你能检查一下为什么当它到达这部分代码时它是空的吗?【参考方案3】:

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

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

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

要不然wordpress.stackexchange里有很多关于这些问题的答案。

【讨论】:

以上是关于Wordpress 管理员自定义字段的主要内容,如果未能解决你的问题,请参考以下文章

WordPress ACF:为自定义帖子类型添加默认行到管理部分的中继器字段类型

在Wordpress上使用ACF上的自定义字段时找不到“图库”字段类型

Wordpress 中带有前缀的自定义字段的自定义简码

Wordpress - 自定义字段

php 搜索自定义字段:在Wordpress搜索中包括自定义字段/ ACF

通过自定义日期字段的 Wordpress 自定义存档页面链接