一个wordpress循环可以处理的最大帖子数是多少?
我可以用'posts_per_page' => -1显示多少篇文章?
我有1317+帖子,我想通过他们排序,但我只是得到一个空白页,每当我尝试做任何事情超过10,000页('posts_per_page' => 10000)。
Thank you In advance
你的php内存用完了
我能想到两个选项:
-
尝试在php.ini中添加一些内存。它不会真正解决你的问题,因为你的帖子数量会增长,你会再次遇到同样的问题。但同时,它可以给你一些时间来研究真正的解决方案:)
-
真正的解决方案,可以使用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;?>
祝你好运