将元数据添加到附件帖子

时间:2015-03-17 作者:Marcelo Noronha

我想在我的附件帖子中添加一个元数据,这样我以后就可以按照元数据的顺序来获取它们。这个元值应该是\'price\'.

所以我认为这可以奏效:

我有以下参数:

$args = array(
\'order\'          => \'ASC\',
\'post_type\'      => \'attachment\',
\'post_parent\'    => $post->ID,
\'post_mime_type\' => \'image\',
\'post_status\'    => null,
\'numberposts\'    => -1,
);
然后我得到帖子(附件帖子)$att_posts = get_posts($args);

然后我想在每个附件帖子中添加一个称为\'price\', 我得到的价值get_post_meta($post->ID, \'key\', true)[\'price\'];.

所以我认为这将完成添加元数据的工作:

foreach( $att_posts as $att ){

  wp_update_attachment_metadata(
    $att->ID, 
    array( "price" => get_post_meta( $post->ID, \'key\', true )[\'price\'] ) )
  );

}
所以我再次声明了其他参数,但这次是按\'meta_value_num\', 使用元密钥\'price\'.

但它没有起作用。

有人知道一个简单的方法来实现这一点吗?有什么建议吗?

谢谢

编辑:

以下是我的所有代码,用于获取订购的附件图像\'meta_key\' \'price\'.

$args = array(
  \'order\'          => \'ASC\',
  \'post_type\'      => \'attachment\',
  \'post_parent\'    => $post->ID,
  \'post_mime_type\' => \'image\',
  \'post_status\'    => null,
  \'numberposts\'    => -1,
);


$att_posts = get_posts($args);

if ($att_posts) {
  foreach( $att_posts as $att ) {
    wp_update_attachment_metadata(
      $att->ID,
      array( \'price\' => get_post_meta( $post->ID, \'price\', true ) )
    );
  }
}


$args = array(
  \'order\'          => \'ASC\',
  \'orderby\'        => \'meta_value_num\',
  \'meta_key\'       => \'price\',
  \'post_type\'      => \'attachment\',
  \'post_parent\'    => $post->ID,
  \'post_mime_type\' => \'image\',
  \'post_status\'    => null,
  \'numberposts\'    => -1,
);


$attachments = get_posts( $args );
if ( $attachments ) {
  foreach ( $attachments as $attachment ) {
    echo \'<a href=\' . $surl . \'/\' . $post->post_name. \'>\' .
    wp_get_attachment_image( $attachment->ID, \'thumbnail_large\' ) . \'</a>\';
  }
} else {
  echo \'<a href=\'.$surl.\'/\' . $post->post_name . \'>\' .
  \'<div class=\\\'thumbnail-small-img-search\\\'></div>\' . \'</a>\';
}
但仍然不起作用。

另一种提问方式是:如何将元数据添加到附件帖子中。然后,通过这个名为\'price\'.

这样做的目的是显示一个页面列表,其中包含按价格从最便宜到最昂贵排序的图像。

这将由一个提交按钮调用到网站的一个页面。

1 个回复
最合适的回答,由SO网友:Daron Spence 整理而成

所以从那以后attachments 是帖子类型,您应该能够分配它们postmeta 与其他任何帖子类型一样。

使用update_post_meta 功能应该可以让您到达需要的位置。

update_post_meta( $attachment_id, \'price\', $price );

http://codex.wordpress.org/Function_Reference/update_post_meta

然后基于元键运行查询。

$args = array(
\'order\'          => \'ASC\',

\'post_type\'      => \'attachment\',
\'post_parent\'    => $post->ID,
\'post_mime_type\' => \'image\',
\'post_status\'    => null,
\'numberposts\'    => -1,

\'meta_key\'       => \'price\',
);

http://codex.wordpress.org/Template_Tags/get_posts#Parameters

结束