1

我需要的:

  1. 用户通过在图库中上传图片WordPress Media Uploader并在帖子中发布它们。比方说post_id = 1,帖子是: [gallery ids"1,2,3,...,n"]
  2. 我需要一个函数来获取post_id = 1此图库中的所有图像 ID。
  3. 图片应该喜欢'.../post-title/attachment/image-title'

我试过了 :

$attachements = query_posts(
    array(
        'post_type' => 'attachment',  
        'post_parent' => $post->ID,   
        'posts_per_page' => -1        
         )
);

var_dump($attachements);

我的输出是:

array(0) { }

我是不是太傻了?

4

3 回答 3

1

get_post_galleries()可用于获取有关帖子中每个画廊的信息。确保在false之后传递$post_id以仅返回数据。

从那时起,您可以遍历不同的画廊并idsids钥匙中拉出。这实际上是一个字符串,因此您需要将explode()其放入一个数组中,您将使用该数组将array_merge()其添加到ids.

由于可能包含 duplicate ids,因此运行array_unique()将确保每个id仅列出一次。

$post_id = 298;

$image_ids = array ();

// get all the galleries in the post
if ( $galleries = get_post_galleries( $post_id, false ) ) {

    foreach ( $galleries as $gallery ) {

        // pull the ids from each gallery
        if ( ! empty ( $gallery[ 'ids' ] ) ) {

            // merge into our final list
            $image_ids = array_merge( $image_ids, explode( ',', $gallery[ 'ids' ] ) );
        }
    }
}

// make the values unique
$image_ids = array_unique( $image_ids );    

// convert the ids to urls -- $gallery[ 'src' ] already holds this info
$image_urls = array_map( "wp_get_attachment_url", $image_ids );    

// ---------------------------- //

echo '<pre>';
print_r ( $image_ids );
print_r ( $image_urls );
echo '</pre>';
于 2016-02-02T02:25:21.223 回答
0

试试下面的代码

 $args = array( 
'post_type' => 'attachment', 
'numberposts' => -1, 
'post_status' => null, 
'post_parent' => $page->ID);

$attachments = get_posts( $args );
var_dump($attachements);
于 2013-09-17T08:49:51.237 回答
-1

您是否尝试过 get_post_galleries?

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

于 2014-12-13T22:54:13.680 回答