是否使用获取子项使图像以与媒体浏览器中相同的顺序显示?

时间:2013-03-01 作者:rob-gordon

我真的希望我的图像以我在媒体浏览器中订购的方式显示。我做错了什么?

$images =& get_children( array(\'post_parent\' => $post->ID,
                                               \'post_type\' => \'attachment\',
                                               \'post_mime_type\' => \'image\',
                                               \'orderby\' => \'menu_order\',
                                               \'order\' => \'asc\' ));

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

a) 如果您已在uploaded to this post 在媒体浏览器中menu_order>0 你可以用

\'orderby\' => \'menu_order\',                                               
\'order\' => \'asc\' 
b) 如果你没有,那么menu_order=0 对于所有这些图像,您需要使用

\'orderby\' => \'ID\',                                               
\'order\' => \'asc\' 
以获得相同的订单(或asc日期)。

在纯SQL中,这两种情况的解决方案可以是这样的:

... ORDER BY menu_order ASC, ID ASC
如果你尝试

\'orderby\' => \'menu_order ID\',                                               
\'order\' => \'asc\' 
你会得到

... ORDER BY menu_order, ID ASC
get_children() 正在使用get_posts() 对于如何将额外字段添加到orderbyorder 参数。

您还可以使用自定义查询,完全控制双重排序:

$sql="SELECT {$wpdb->posts}.* 
FROM {$wpdb->posts} 
WHERE {$wpdb->posts}.post_parent = %d  
AND ({$wpdb->posts}.post_mime_type LIKE \'image/%%\')  
AND {$wpdb->posts}.post_type = \'attachment\' 
AND ({$wpdb->posts}.post_status <> \'trash\' AND {$wpdb->posts}.post_status <> \'auto-draft\')  
ORDER BY {$wpdb->posts}.menu_order ASC,{$wpdb->posts}.ID ASC";

$images=$wpdb->get_results($wpdb->prepare($sql,$post->ID));

结束

相关推荐

Hover images and Videos

我用这个代码在我的博客上显示视频循环。它工作得很好。作用phpfunction catch_video() { global $post, $posts; $first_vid = \'\'; ob_start(); ob_end_clean(); $output = preg_match_all(\'/<iframe.+src=[\\\'\"]([^\\\'\"]+)[\\\'\"].*>/i\', $post->post_c