2016-03-31 14 views
0

get_posts() işleviyle özel bir gönderi türü için tüm yayınları getirdiğimde, her zaman bir bellek boyutu sınırına ulaştım. veritabanı.WordPress bir özel gönderi tipinin tüm gönderilerini getiriyor

Belleği yükseltmek bir seçenek değildir ve sayfalama özelliğini etkinleştirmez.

Buna neden olabilir ve bunu nasıl çözebilirim? Bu mesajların her birinden, daha sonra meta verileri getirip 2 dizide/nesnede ve daha fazla şeyde bölmek zorunda kalacağım. Sayfa başına istek başına 5000'den fazla gönderi/kayıt tutması gerekir.

Herhangi bir ipucu, fikir, öneri, başka bir şey?

Önce şunu deneyin:

İkinci deneyin

$args = array(
    'posts_per_page' => 300, 
    'offset'   => 0, 
    'category'   => '', 
    'category_name'  => '', 
    'orderby'   => 'title', 
    'order'    => 'ASC', 
    'post_type'   => 'partners', 
    'post_status'  => 'publish', 
    'suppress_filters' => true, 
    /*'meta_key'  => 'partner-submission-status', 
    'meta_value'  => 'goedgekeurd',*/ 
); 

$posts = get_posts($args); 
var_dump(count($posts)); 

:

$query = $wpdb->get_results(" 
    SELECT p.ID, p.post_title 
    FROM wp_posts as p 
    INNER JOIN wp_postmeta as m 
    on p.ID = m.post_id 
    WHERE p.post_type = 'partners' AND 
    p.post_status = 'publish' 
"); 

var_dump(count($query));die; 

Fakat her ikisi dahi var_dump

+0

için alamadım ben get_posts ile çalışmak çalıştı () işlev ve bir ham sorgu ile ancak her ikisi de bellek boyutu sınırını aşar. Orijinal yazıma bir kod ekleyeceğim. –

+0

WP-config dosyasından WP_MEMORY_LIMIT değerini artırmayı denediniz mi? – DpEN

+0

Sorun şu ki, 76 özel alanım (meta veri) var, varsayılan sorgu alıp almak için 50000+ kayıt alıyor ve sistemde çöküyor. Bu nedenle bu meta verileri ayrı bir veritabanı tablosuyla eşleştirmenin bir yolunu bulmalıyım, böylece her bir iş ortağı için bu türdeki bir iş ortağı için bir satır vardır, böylece yalnızca iş ortağı başına kayıt (ham sorgu) alır ve bu konuda her şeyi yapar. Bunun için herhangi bir öneriniz var mı? –

cevap

-1
<?php query_posts('post_type=your_post_type&posts_per_page=10'); 
if (have_posts()) : while (have_posts()) : the_post(); ?> 

........... 

<?php endwhile; endif; wp_reset_query(); ?>