我正在列出已发布帖子的所有附加图像(&A);页面,但列出的是较旧/已删除的附加图像。我想知道这是否取决于修订(根本不应该考虑)
代码:
$args = array(
\'post_type\' => array(\'post\',\'page\'),
\'post_status\' => \'publish\',
\'posts_per_page\' => \'-1\'
);
query_posts( $args );
while ( have_posts() ) {
the_post();
$post = get_post(get_the_ID());
$attachments = get_children(array(\'post_parent\' => $post->ID,
\'post_status\' => \'any\',
\'post_type\' => \'attachment\',
\'post_mime_type\' => \'image\',
\'order\' => \'ASC\',
\'numberposts\' => \'-1\',
\'orderby\' => \'menu_order ID\'));
foreach ($attachments as $att_id => $attachment) {
$medium_img_url = wp_get_attachment_image_src($attachment->ID,\'medium\');
$image = (isset($medium_img_url[0])) ? $medium_img_url[0] : \'\';
?> <div><a target="_blank" href="<?php echo $image; ?>"><img src="<?php echo $image ?>"/></a></div><?php
}
}
wp_reset_postdata();
SO网友:Tom J Nowell
您的问题在于:
\'order\' => \'ASC\',
\'numberposts\' => \'-1\',
\'orderby\' => \'menu_order ID\'));
您要求按菜单顺序排序,然后按ID排序。然后您要求按升序排序。
由于较新的帖子比较旧的帖子具有更高的ID,因此会首先显示较旧的帖子。翻转ASC
到DESC
你很可能会得到你想要的。
其他注意事项:
切勿使用query_posts
, 此函数没有无法使用的有效用法WP_Query
或者pre_get_posts
过滤#最佳实践#头痛#可怕的灾难#不可原谅的罪恶
不要为抓取帖子的所有辅助方法而烦恼,例如get_pages
, get_children
, 等等,他们都是WP_Query
这增加了额外的复杂性。您已经通过了家长ID#最佳实践始终有if ( have_posts() ) {
检查,如果没有找到帖子,您将不会被告知任何信息,只会想知道出了什么问题#调试不要使用-1
, 设置一个超高的数字,但永远不要设置无限制。即使你从来没有想过要达到这个数字,也要设定它。分页也有性能方面的好处,您的服务器只能在内存中保存这么多内容,而hold在页面达到执行时间限制之前有这么多时间生成页面#性能#缩放#高流量请退出您的输出,不要这样做echo $url
, 做echo esc_url( $url )
, 这保证了它确实是一个URL,并且没有恶意的东西被黑客窃取#安全