WordPress从图库抓取第一张图片

时间:2013-03-04 作者:chael

WordPress gallery短代码现在如下所示:

[gallery ids="3439,3440,3444,3443,3445,3453,3457,3458,3456,3461,3452,3468"]
我的问题是我有一个摘要页面,它抓住了每个子页面的第一个图像。代码如下:

$args        = array(
    \'post_type\'     => \'attachment\',
    \'post_parent\'   => $page->ID,
    \'orderby\'       => \'menu_order ID\',
    \'order\'         => \'asc\',
    \'numberposts\'   => 1,
);
$attachments = get_posts( $args ); 
这现在不起作用(我猜是因为画廊的顺序现在是基于ID的),有什么方法可以修复它吗?

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

我有同样的问题,以前使用过get_children() 从给定页面的库中检索前4个图像。

以下是我提出的解决方案:

// helper function to return first regex match
function get_match( $regex, $content ) {
    preg_match($regex, $content, $matches);
    return $matches[1];
} 

// Extract the shortcode arguments from the $page or $post
$shortcode_args = shortcode_parse_atts(get_match(\'/\\[gallery\\s(.*)\\]/isU\', $post->post_content));

// get the attachments specified in the "ids" shortcode argument
$attachments = get_posts(
    array(
        \'include\' => $shortcode_args["ids"], 
        \'post_status\' => \'inherit\', 
        \'post_type\' => \'attachment\', 
        \'post_mime_type\' => \'image\', 
        \'order\' => \'menu_order ID\', 
        \'orderby\' => \'post__in\', //this forces the order to be based on the order of the "include" param
        \'numberposts\' => 1,
    )
);
现在,\'numberposts\' => 1 当您在include参数中指定多个id时,上述方法似乎不起作用。因此,您有两个选择:

分解“ids”参数,只获取第一个ID,以便在get\\u posts调用中使用(但仍将检索库中的所有附件)。不理想,但会起作用

结束

相关推荐

Gallery backend only

我正在使用Wordpress为我的网站的博客部分以及我的活动时间表提供支持(使用自定义帖子类型管理区域)。我希望添加创建图像库的选项,并使用自定义标记将其包含在帖子中。我想自己处理整个前端集成,只需使用库插件上传的db数据和文件。有没有什么好的后端专用解决方案可以创建图库,或者我应该自己开发吗?