【发布时间】:2011-04-23 10:53:46
【问题描述】:
我正在使用允许用户创建帖子的 wordpress 主题(他们不需要登录)。问题是当帖子显示时,<?php the_author(); ?> 总是显示为“admin”。创建后的表单有一个名称字段,我可以在 functions.php 中找到,但是如何手动将帖子的作者更改为表单字段中输入的名称?
【问题讨论】:
我正在使用允许用户创建帖子的 wordpress 主题(他们不需要登录)。问题是当帖子显示时,<?php the_author(); ?> 总是显示为“admin”。创建后的表单有一个名称字段,我可以在 functions.php 中找到,但是如何手动将帖子的作者更改为表单字段中输入的名称?
【问题讨论】:
在没有看到上下文的情况下,我只能提供朝着正确方向迈出的一步。在主题中的插件或 functions.php 中,您可以调用 wp_insert_post_data 过滤器来更改将作为帖子插入的数据。例如,如果您希望每个帖子都归属于 ID 为 5 的作者,您可以执行以下操作:
function my_change_author( $data , $postarr )
{
$data['post_author'] = 5;
return $data;
}
add_filter('wp_insert_post_data' , 'my_change_author' , '99', 2);
我之前做过类似的事情,我将前端表单捕获为帖子并自动分配给我称之为 Web Monkey 或类似名称的预定义作者;)查看此页面了解更多信息:http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_insert_post_data .这个过滤器非常强大,因为您可以在任何情况下更改将成为您帖子的数据,然后再进入数据库。
【讨论】:
wp_insert_post_data) 覆盖它。如果您是使用PHP 的inserting 或updating 帖子,这特别好。检查此挂钩中的帖子类型也是一个好主意,这样您就不会覆盖所有帖子类型中每个帖子的作者 ID。
您检查过the_author_meta() 包含的内容吗? WP 必须为每个帖子附加一个用户 ID,因此无论用户在框中输入什么内容,它都有可能将用户 1 分配给这些帖子。在没有看到自定义函数或不知道您使用什么主题进行测试的情况下,很难进行故障排除。
【讨论】: