GET_CHILD返回较旧的图像

时间:2018-01-09 作者:Riccardo

我正在列出已发布帖子的所有附加图像(&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();

1 个回复
SO网友:Tom J Nowell

您的问题在于:

        \'order\' => \'ASC\',
        \'numberposts\' => \'-1\',
        \'orderby\' => \'menu_order ID\'));
您要求按菜单顺序排序,然后按ID排序。然后您要求按升序排序。

由于较新的帖子比较旧的帖子具有更高的ID,因此会首先显示较旧的帖子。翻转ASCDESC 你很可能会得到你想要的。

其他注意事项:

切勿使用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,并且没有恶意的东西被黑客窃取#安全

  • 结束

    相关推荐

    Posts_Per_Page仅返回一个帖子

    function blog_post_home_shortcode() { $query = new WP_Query( array( \'post_type\' => \'post\', \'order\' => \'DESC\', \'post_status\' => \' publish\', \'posts_per_page\' => 3 ));&#x