在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。这个过滤器非常强大,因为你可以在你的数据到达数据库之前改变它。

是否检查了the_author_meta()包含的内容?WP必须为每个帖子附加一个userID,所以很可能它将用户1分配给这些帖子,而不管他们在框中输入什么。在没有看到自定义函数或不知道要使用什么主题进行测试的情况下,将很难排除故障。

最新更新