2015-09-09 89 views
1

wordpress循環可以使用的最大數量是多少?wordpress循環可以使用的最大數量是多少?

可以顯示'posts_per_page'=> -1的帖子數量?

我得到了1317+帖子,我想對它們進行排序,但只要我嘗試去做超過10,000頁的任何內容('posts_per_page'=> 10000),我就會得到一個空白頁。

謝謝提前

+1

許多因素,包括你的機器,你有值取決於在你的php.ini文件中 –

回答

1

看起來像你用完你的php內存。

我能想到的兩個選項:

  1. 嘗試在你的php.ini中添加一些內存。它不會真正解決您的問題,因爲您的帳戶金額將會增長,並且您將再次遇到同樣的問題。 但同時它可以給你一些時間,以真正的解決方案:)

  2. 真正的解決方案,你可以使用WPDB對象直接與WP DataBase工作。 通過這種方式,您可以限制從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;?> 

好運:)

+0

非常感謝 –

相關問題