Ich erstelle ein Plugin, das eine benutzerdefinierte Abfrage in der WordPress-Datenbank durchführt, und dann gehe ich die Ergebnisse durch, wobei ich jeden Beitragstitel als Link zum eigentlichen Beitrag aufliste.
Ich benutze get_permalink($id)
um den URI jedes Beitrags zu erhalten, aber da ich dies außerhalb der Schleife mache, vermute ich, dass jede dieser Anfragen eine separate Datenbankabfrage durchführt.
Ich habe mir den Funktionscode angesehen und versucht zu verfolgen, was in den eigentlichen WordPress-Kerndateien vor sich geht, aber was mich wirklich interessiert, ist ein allgemeiner Weg, dies zu tun, damit ich sicherstellen kann, dass ich immer das meiste schreibe optimierter Code in allen meinen Plugins.
Kennt jemand den besten Weg, dies zu erreichen?
Fügen Sie in wp-config.php diese Zeile hinzu:
define('SAVEQUERIES', true);
In Ihrer Theme-functions.php-Datei (oder einer Plugin-Datei) können Sie Folgendes verwenden:
add_action('shutdown', 'sql_logger');
function sql_logger() {
global $wpdb;
$log_file = fopen(ABSPATH.'/sql_log.txt', 'a');
fwrite($log_file, "//////////////////////////////////////////\n\n" . date("F j, Y, g:i:s a")."\n");
foreach($wpdb->queries as $q) {
fwrite($log_file, $q[0] . " - ($q[1] s)" . "\n\n");
}
fclose($log_file);
}
Vergewissere dich ABSPATH.'/sql_log.txt'
ist beschreibbar von php.
Hoffe das hilft.
Kann die Antwort von @Poelinca Dorin nicht kommentieren, also bleib einfach hier. Wenn Sie wissen möchten, was Ihre Anfrage startet, fügen Sie einfach dies hinzu
fwrite($log_file, $q[0] . " - ($q[1] s)". " [Stack]: $q[2]" . "\n\n");
stattdessen
fwrite($log_file, $q[0] . " - ($q[1] s)" . "\n\n");
14035200cookie-checkIst es möglich, ein Protokoll aller Datenbankabfragen für eine Seitenanforderung in WordPress zu drucken?yes