【问题标题】:wordpress - manually set the author of a post in phpwordpress - 在 php 中手动设置帖子的作者
【发布时间】:2011-04-23 10:53:46
【问题描述】:

我正在使用允许用户创建帖子的 wordpress 主题(他们不需要登录)。问题是当帖子显示时,<?php the_author(); ?> 总是显示为“admin”。创建后的表单有一个名称字段,我可以在 functions.php 中找到,但是如何手动将帖子的作者更改为表单字段中输入的名称?

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    在没有看到上下文的情况下,我只能提供朝着正确方向迈出的一步。在主题中的插件或 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() 设置帖子作者,因为它被硬编码为当前 user_id
    • 聪明的主意,考虑到 WordPress 强制在此处输入。您可以使用此过滤器挂钩 (wp_insert_post_data) 覆盖它。如果您是使用PHPinsertingupdating 帖子,这特别好。检查此挂钩中的帖子类型也是一个好主意,这样您就不会覆盖所有帖子类型中每个帖子的作者 ID。
    【解决方案2】:

    您检查过the_author_meta() 包含的内容吗? WP 必须为每个帖子附加一个用户 ID,因此无论用户在框中输入什么内容,它都有可能将用户 1 分配给这些帖子。在没有看到自定义函数或不知道您使用什么主题进行测试的情况下,很难进行故障排除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多