【问题标题】:Modify custom field from front end从前端修改自定义字段
【发布时间】:2013-05-07 01:07:48
【问题描述】:

如果我需要在 wordpress 下管理自定义字段,而不是从管理区域。换句话说,我需要用户从前端修改帖子自定义字段的内容。这样做的方法是什么?

例如,请把 Stackoverflow.com 想象成一个 wordpress 网站。在此站点下,赞成/反对票的数量和接受状态是我的 2 个帖子自定义字段。如何让前端用户修改他们在 WP 数据库中的值?

如果您有另一种更好的方法来创建投票系统和接受系统,使用 wordpress,我们将不胜感激。但是如果我的方法(使用自定义后字段)是好的,请指导我从网络或 codex 中查找文档以实现我的目标。

感谢您一如既往的帮助。

【问题讨论】:

  • 答案有帮助吗?让我知道是否还有其他需要澄清的地方。
  • @acsmith 非常感谢您对此事的反馈。当然,您的回答对我很有帮助,此外,它也让我了解了许多对我来说新的概念。我现在正在阅读您提供的大量信息(来自 codex 和 tutplus),并且我正在尝试找到使用 BuddyPress 管理用户的解决方案。嗯,还有一些工作要做,等整个解决方案实施的时候,我会在这里接受。我已经+1了,我肯定会在这里以cmets的身份发布更多问题。非常感谢。

标签: wordpress metadata backend custom-fields frontend


【解决方案1】:

我建议考虑几件事:

  1. 每个帖子都应显示赞成票和反对票的总和
  2. 每个用户只能投赞成票或反对票一次(即,一个用户不能对同一个帖子投一百次)

您认为您希望为您的主题创建一个功能,允许用户在登录时更改帖子的元数据。 然而,实际情况并非如此——您需要做的是允许用户编辑他们自己的元数据中的一个元素(参见add_user_meta),该元素基本上只是一个散列。元数据可能类似于array("post-666-vote" => -1, "post-777-vote" => 1),用于对 666 号帖子投反对票和对 777 帖投赞成票。

因此,在加载每个帖子时,您的投票计数渲染器将如下所示:

vote = get_post_meta($user_id, "post-" . $post_id . "-vote", true);
if(vote == -1) {
  // Render down-arrow voting
} elsif(vote == 1) {
  // Render up-arrow voting
} else { 
  // Render normal arrows
}

每个箭头可能必须发出 AJAX 请求来更新帖子的元数据。这是一个很长的教程(但它不是超级复杂!我保证!),大约 3/4 的内容讨论了如何使用 AJAX 请求来修改某些用户的元数据。 http://wp.tutsplus.com/tutorials/plugins/a-primer-on-ajax-in-the-wordpress-frontend-actually-doing-it/

唯一真正的重大变化是 WP AJAX 请求调用的 PHP 函数还需要一个回调函数来更新帖子的元数据,并更改帖子本身的投票数。这样,当页面重新加载时,它会显示正确的投票数。

【讨论】:

  • 第一次没看懂你的回答,后来研究学习觉得很有用。再次问这个问题后,我在其他地方找到了答案。我花了很多时间来理解它们,然后当我回到这里时,我发现当我收集所有答案时,结果就是你的答案,第一个。再次感谢
猜你喜欢
  • 2022-12-15
  • 1970-01-01
  • 1970-01-01
  • 2015-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多