在发布帖子时,动态更改wordpress帖子作者

时间:2012-08-04 20:35:31

标签: wordpress publish author

我正在开发我的网站,并要求在发布时动态更改帖子作者ID。

所有帖子都将由管理员编写和发布,但作为内容由不同作者提供,需要将作者ID从管理员更改为其他作者(作者ID将来自自定义字段)

那么如何在发布时动态执行此操作。

作者信息是否来自自定义字段?因为您可以手动在UI中直接执行此操作。

  • 启用"作者"创建帖子时显示选项中的阻止

  • 在下拉菜单中更改作者

这是我的主题metabox.php代码我使用wpalchemy元文件脚本,下面的代码是在我的cpt循环php文件

// getting custom field value from image_artist
// this is giving value like artist_login_name / id
$png_gallery_meta->the_field('image_artist');
$artist_info = $png_gallery_meta->get_the_value();

// to separate artist_login_name and id
$string = $artist_info;
$artist = substr($string, 0, stripos($string, "/") );

// getting first name and last name from user id
$author_first_name = get_userdata(basename($string))->first_name;

$author_last_name = get_userdata(basename($string))->last_name;

所以我使用上面的代码从自定义字段下拉选择框中获取用户信息。现在我如何使用上面的值来动态更改id,而管理员发布帖子的帖子作者id应该从上面的id值改变从选择框中获取。我希望现在更清楚了。

2 个答案:

答案 0 :(得分:1)

作者信息是否来自自定义字段?因为您可以手动在UI中直接执行此操作。

  • 创建帖子

  • 时,在显示选项中启用“作者”块
  • 在下拉菜单中更改作者

这是我的主题metabox.php代码我使用wpalchemy元文件脚本,下面的代码是在我的cpt循环php文件

// getting custom field value from image_artist
// this is giving value like artist_login_name / id
$png_gallery_meta->the_field('image_artist');
$artist_info = $png_gallery_meta->get_the_value();

// to separate artist_login_name and id
$string = $artist_info;
$artist = substr($string, 0, stripos($string, "/") );

// getting first name and last name from user id
$author_first_name = get_userdata(basename($string))->first_name;

$author_last_name = get_userdata(basename($string))->last_name;

所以我使用上面的代码从自定义字段下拉选择框中获取用户信息。现在我如何使用上面的值来动态更改id,而管理员发布帖子的帖子作者id应该从上面的id值改变从选择框中获取。我希望现在更清楚了。

答案 1 :(得分:1)

$post_id = $post->ID; // change this to whathever
$user_id = '4'; // change this too

$the_post = array();
$the_post['ID'] = $post_id;
$the_post['post_author'] = $user_id;

wp_insert_post( $the_post );

上面的代码将使用ID为4的作者更新当前循环播放的帖子(通过$ post-> ID)。

了解wp_insert_post的工作原理here。基本上,如果您传递已存在的帖子的ID,它将使用您传递给它的新信息更新该帖子。 (在这种情况下为作者ID)

如果您想从自定义字段中获取内容,可以使用:

$author = get_post_meta($this->ID, 'author_id', TRUE);

有关custom fields的更多信息。