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的),有什么方法可以修复它吗?
最合适的回答,由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调用中使用(但仍将检索库中的所有附件)。不理想,但会起作用希望对你有帮助!