Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich query_posts optimieren, um die Anzahl der Datenbankabfragen beim Abrufen von WordPress-Artikeln zu reduzieren?

Wie kann ich query_posts optimieren, um die Anzahl der Datenbankabfragen beim Abrufen von WordPress-Artikeln zu reduzieren?

WBOY
Freigeben: 2016-08-04 09:21:53
Original
1375 Leute haben es durchsucht

So optimieren Sie den folgenden WordPress-Code. Derzeit wird er separat abgefragt, was zu vielen Datenbankabfragen führt. Tatsächlich möchte ich die Daten auf einmal abrufen und den Kategorienamen und die Anzahl ausgeben Artikel unter der Kategorie in einer Schleife.

<code><?php  
        $loop_cate_id=array(1,3,8); //指定要输出的分类id 
        $num=10;//指定每次循环输出的文章篇数     
     ?>  
        <?php foreach($loop_cate_id as $key=>$value){ ?> 
            <?php $posts = query_posts($query_string . "&cat={$value}&orderby=date&showposts={$num}" ); ?>  
            <h2><a href="<?php echo get_category_link($value); ?>"><?php single_cat_title(); ?></a></h2> 
            <ul> 
                <?php while(have_posts()) : the_post(); ?> 
                <li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a>    </li> 
                <?php endwhile; ?> 
            </ul>  
        <?php }?> 
    </div> </code>
Nach dem Login kopieren
Nach dem Login kopieren

Antwortinhalt:

So optimieren Sie den folgenden WordPress-Code. Derzeit wird er separat abgefragt, was zu vielen Datenbankabfragen führt. Tatsächlich möchte ich die Daten auf einmal abrufen und den Kategorienamen und die Anzahl ausgeben Artikel unter der Kategorie in einer Schleife.

<code><?php  
        $loop_cate_id=array(1,3,8); //指定要输出的分类id 
        $num=10;//指定每次循环输出的文章篇数     
     ?>  
        <?php foreach($loop_cate_id as $key=>$value){ ?> 
            <?php $posts = query_posts($query_string . "&cat={$value}&orderby=date&showposts={$num}" ); ?>  
            <h2><a href="<?php echo get_category_link($value); ?>"><?php single_cat_title(); ?></a></h2> 
            <ul> 
                <?php while(have_posts()) : the_post(); ?> 
                <li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a>    </li> 
                <?php endwhile; ?> 
            </ul>  
        <?php }?> 
    </div> </code>
Nach dem Login kopieren
Nach dem Login kopieren

Würde das Einschalten des Cachings das Problem nicht lösen?

1. Das Problem besteht nun darin, dass jede Kategorie einmal abgefragt werden muss. Können Sie zunächst alle Daten der Kategorie abfragen? Sortierung und Anzahl der Artikel können Sie hier verwenden, um die erforderlichen Daten zu erhalten. (Auf diese Weise sollte es nur eine Abfrage für die klassifizierten Daten auf der Homepage geben)

2. Bilden Sie dann ein Array gemäß der Codelogik. Für das Array können Sie sich auf das Format beziehen, das ich Ihnen unten gegeben habe.

<code>$postList[cate_id]['title'];
$postList[cate_id]['article'][];//将文章按分类id当成键值存入数组
foreach($postList as $post) {
    foreach($post['article'] as $value){
        
    }
} </code>
Nach dem Login kopieren

Bitte geben Sie einen Daumen hoch, ich hoffe, einige Freunde, die mit wp vertraut sind, werden einen Blick darauf werfen.

Ich kenne mich mit wp nicht aus und habe Ihren Code nicht sehr oft gelesen. Sie können Schlüssel-Wert-Paare verwenden und einfach eine Schleife schreiben.
Überprüfen Sie zunächst alle Kategorien, um ein Array von Schlüssel-Wert-Paaren zu bilden.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage