一个wordpress循环可以处理的最大帖子数是多少?


what is the maximum number of post a wordpress loop can work with?

一个wordpress循环可以处理的最大帖子数是多少?

我可以用'posts_per_page' => -1显示多少篇文章?

我有1317+帖子,我想通过他们排序,但我只是得到一个空白页,每当我尝试做任何事情超过10,000页('posts_per_page' => 10000)。

Thank you In advance

你的php内存用完了

我能想到两个选项:

  1. 尝试在php.ini中添加一些内存。它不会真正解决你的问题,因为你的帖子数量会增长,你会再次遇到同样的问题。但同时,它可以给你一些时间来研究真正的解决方案:)

  2. 真正的解决方案,可以使用WPDB对象直接与WP数据库工作。通过这种方式,你可以限制从数据库获取的帖子数量,所以你不需要一次将所有对象存储在内存中。

在那个例子中,我正在显示有很多帖子的类别。我在DB上迭代,每次迭代获得100个帖子(使用LIMIT),直到我获得所有帖子:

    $sql = "
            SELECT * 
            FROM $wpdb->posts
            LEFT JOIN $wpdb->term_relationships ON($wpdb->posts.ID = $wpdb->term_relationships.object_id)
            LEFT JOIN $wpdb->term_taxonomy ON($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
            LEFT JOIN $wpdb->terms ON($wpdb->term_taxonomy.term_id = $wpdb->terms.term_id)
            WHERE post_status = 'publish'
            AND $wpdb->terms.name = '".$cat_name."'
            AND $wpdb->term_taxonomy.taxonomy = 'category'
            AND post_type = 'post' 
            AND post_title not regexp '".$excluded_posts."'
            ORDER BY post_date DESC LIMIT 100 OFFSET $offset
            ";
        $posts_in_category = $wpdb->get_results($sql, OBJECT);
        ?>
    <!-- Some HTML here -->
    <?php while ($posts_in_category): ?>
            <?php if ($posts_in_category): ?>
                <?php global $post; ?>
                <?php foreach ($posts_in_category as $post): ?>
                    <?php setup_postdata($post); ?>
                    <!-- Here you can pot your post template -->
                <?php endforeach; ?>
            <?php else: ?>
                <p><?php _e('No posts matched your criteria.', 'wp-print'); ?></p>
        <?php endif; ?>
<?php $offset += 100; 
    $sql = "
        SELECT * 
        FROM $wpdb->posts
        LEFT JOIN $wpdb->term_relationships ON($wpdb->posts.ID = $wpdb->term_relationships.object_id)
        LEFT JOIN $wpdb->term_taxonomy ON($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
        LEFT JOIN $wpdb->terms ON($wpdb->term_taxonomy.term_id = $wpdb->terms.term_id)
        WHERE post_status = 'publish'
        AND $wpdb->terms.name = '".$cat_name."'
        AND $wpdb->term_taxonomy.taxonomy = 'category'
        AND post_type = 'post' 
        AND post_title not regexp '".$excluded_posts."'
        ORDER BY post_date DESC LIMIT 100 OFFSET $offset
        ";
    $posts_in_category = $wpdb->get_results($sql, OBJECT);
?>
<?php endwhile;?>

祝你好运