【问题标题】:Change wordpress post author on the fly while publishing the post在发布帖子时即时更改 wordpress 帖子作者
【发布时间】:2012-08-04 20:35:30
【问题描述】:

我正在开发我的网站,并且需要在发布时即时更改帖子作者 ID。

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

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

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

  • 在创建帖子时启用显示选项中的“作者”块

  • 在下拉菜单中更改作者

这是我使用 wpalchemy metabox 脚本的主题 metabox.php 代码,下面的代码在我的 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 值而更改。我希望现在更清楚了。

【问题讨论】:

    标签: wordpress publish author


    【解决方案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的信息。

    【讨论】:

    • 非常感谢您的代码,但仍然有点困惑。如何准确地使用我的代码以及我应该在哪个文件中放置 wp_insert_post 代码以使其工作。请参考我的代码和更新的问题,以便您能以特定方式帮助我。我真的很感激
    【解决方案2】:

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

    • 在创建帖子时启用显示选项中的“作者”块

    • 在下拉菜单中更改作者

    这是我使用 wpalchemy metabox 脚本的主题 metabox.php 代码,下面的代码在我的 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 值而更改。我希望现在更清楚了。

    【讨论】:

      猜你喜欢
      • 2022-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      • 1970-01-01
      • 2023-01-20
      • 1970-01-01
      相关资源
      最近更新 更多