如何在代码中设置附件家长帖子ID?

时间:2016-05-16 作者:Sean H

我继承了一个导入的wordpress站点,但存在一些问题。我有一个附件ID和帖子ID的列表,但我需要在代码中重新连接它们。

我有一张这样的附件清单:

  $attachments = get_posts( array(\'post_type\' => \'attachment\',\'posts_per_page\' => -1));

  foreach ( $attachments as $key=>$attachment ) {
  }
我还有一个csv附件ID,以及它们与哪个帖子相关。现在所有附加的父帖子id都是“0”,我需要做的是更新每个帖子,使其parnet post id是中的相关id

在这个循环中,设置Attachments parnet post id的关键字Press函数是什么?然后确保更新也传播到所有元数据。

我想要……之类的东西。。。。设置\\u attachment\\u parent\\u id($attachment->id,$myIdFromArchives);

谢谢你的帮助!

编辑-我尝试过直接更新数据库id,但这不起作用。

1 个回复
SO网友:Howdy_McGee

在WordPress中-附件为their own post-type 这意味着您只需使用wp_update_post():

$media_post = wp_update_post( array(
    \'ID\'            => $attachment_id,
    \'post_parent\'   => $post_parent_id,
), true );

if( is_wp_error( $media_post ) ) {
    error_log( print_r( $media_post, 1 ) );
}
在上面的示例中,您将同时传递附件ID和Post ID,后者将作为附件“父级”传递给wp_update_post() 功能,但我们还希望确保,如果出于任何原因无法更新,我们将添加WP_Errorerror_log 所以我们可以调试出错的地方。

您还可以在wp_update_post() 函数以确保给定的附件id确实是附件。这只是另一项检查,因此我们不会意外地更新不需要的内容:

if( \'attachment\' === get_post_type( $attachment_id ) ) {
    // Update Post Code
}