Deaktivieren (oder begrenzen Sie) Abfragen, wenn bestimmte Inhalte (oder Daten) nicht benötigt werden (oder angezeigt werden)

Zurzeit mache ich ein benutzerdefiniertes Design für eine Website. Das Problem, das ich in WordPress sehe, betrifft fast alle Daten, die aus der database herausgezogen werden.

Während in bestimmten Seiten – wie front-page.php – nur Titel, Kategorie, zwei Metas und der Ausschnitt benötigt werden, bekommt WP alles. Hell, der Post-Inhalt ist nur in post-single.php sichtbar, aber stattdessen zieht WP alle Inhalte, Tags, GUID, Tags, etc. heraus, wo es möglich ist (print_r hilft sehr).

Die Frage ist, wie WordPress-Daten begrenzt werden, die aus seinen Abfragen herausgezogen werden. Ich denke, dass ich ein Netz “WP_Query” machen (oder es überschreiben sollte), das auf $ wpdb basiert und es für den Aufstellungsort benutzt, anstatt den Standard zu verwenden. Nun, zumindest functionen wie query_posts, WP_Query und get_posts erlauben es mir nicht, die herausgezogenen Daten zu begrenzen.

Ich bin auch daran interessiert, die Daten zwischenzuspeichern, weil es wirklich klein ist, aber das ist zuerst.

Update 1: Versucht “Daten zu minimieren”:

add_action( 'pre_get_posts', 'disable_main_query' ); function disable_main_query( $query ) { if( $query->is_main_query() && $query->is_front_page() ) { add_filter('posts_fields', 'minimized_data'); } } function minimized_data($fields) { global $wpdb; $fields = " $wpdb->posts.ID, $wpdb->posts.post_title, $wpdb->posts.post_excerpt, $wpdb->posts.comment_count, $wpdb->posts.guid, $wpdb->posts.post_status, $wpdb->posts.post_name, $wpdb->posts.post_date, $wpdb->posts.post_type "; return $fields; } 

Mow die Standardschleife wird mit “Undefined property: stdClass :: $ post_XXXX” und anderen Dingen geplagt. Ich denke, the_post ist jetzt schuld, also checke ich.

Update 2: Hat es erwartet, war es. Change die while Schleife für foreach ($posts as $post) keine undefinierten Eigenschaften, aber wie ich kann nicht loswerden ob_end_flush() [ref.outcontrol]: failed to delete buffer zlib output compression .

Update 3: define( 'SAVEQUERIES', FALSE ); und kein fehlgeschlagener Puffer mehr (für WAMP).

Solutions Collecting From Web of "Deaktivieren (oder begrenzen Sie) Abfragen, wenn bestimmte Inhalte (oder Daten) nicht benötigt werden (oder angezeigt werden)"

Sie können 'posts_fields' filtern, prüfen, ob es sich um die Hauptabfrage handelt und die abgefragten Felder auf … beschränken, was immer Sie brauchen.
Details und Nebenwirkungen finden Sie unter WP_Query::get_posts() in /wp-includes/query.php .

Zum Debuggen der Abfragen empfehle ich das Debug-Bar- Plugin. Wenn Sie hinzufügen …

 define( 'WP_DEBUG', TRUE ); define( 'SAVEQUERIES', TRUE ); 

… zu Ihrer wp-config.php können Sie die resultierende Abfrage sehen und wie sie spätere Abfragen beeinflusst.

Nach einigen Ausgrabungen scheint es, dass die einzige Möglichkeit, “nur das zu bekommen, was Sie brauchen”, darin besteht, de class $ wpdb zu verwenden, um mit der database zu sprechen. Das ist auch eine zweite Schleife, außerhalb der Hauptschleife.

Nun, um der performance willen, sollte es eine Möglichkeit geben, die Haupt- / Standardschleife zu ändern, die WordPress immer ausführt, um den Post-Inhalt und andere nutzlose Daten (für die Site) NICHT zu bekommen.