在该页面中创建了页面和图库后,我希望按照创建图库时设置的顺序检索该图库中的所有图像,即在添加媒体弹出窗口中拖动图像的顺序。
我需要在PHP中检索所有图像URL及其标题等到一个数组中。
我一直在使用下面的代码,但它并不能解释它们在库中设置的顺序。
function get_page_attached_images($page_id) {
$output;
$output_row;
$thumb_ID = get_post_thumbnail_id( $page_id );
if ( $images = get_posts(array(
\'post_parent\' => $page_id,
\'post_type\' => \'attachment\',
\'numberposts\' => -1,
\'orderby\' => \'menu_order\',
\'order\' => \'ASC\',
\'post_mime_type\' => \'image\',
\'exclude\' => $thumb_ID,
)))
foreach ( $images as $img ) {
$output_row[\'url\'] = $img->guid;
$output_row[\'title\'] = $img->post_title;
$output_row[\'caption\'] = $img->post_excerpt;
//$output_row[\'img\'] = $img;
$output[] = $output_row;
}
return $output;
}
有人知道在检索这些附件时如何保持库顺序吗?
我正在使用Wordpress v3。61
SO网友:s_ha_dum
库“顺序”保存在库短代码本身中。使用“文本”编辑器查看库的代码,然后拖动图像,再次查看原始代码。要做到这一点,您必须解析gallery短代码的帖子内容并提取其数据。类似这样:
function extract_gallery_wpse_114337($post) {
$regex = get_shortcode_regex();
preg_match_all(\'/\'.$regex.\'/\',$post->post_content,$matches);
if (!empty($matches[2])) {
foreach ($matches[2] as $k => $v) {
if (\'gallery\' == $v) {
$attr = shortcode_parse_atts($matches[3][$k]);
break;
}
}
}
if (!empty($attr[\'ids\'])) {
$atts = new WP_Query(
array(
\'post_type\' => \'attachment\',
\'post_status\' => \'inherit\',
\'post__in\' => explode(\',\',$attr[\'ids\']),
\'orderby\' => \'post__in\'
)
);
var_dump($atts);
}
}