webentwicklung-frage-antwort-db.com.de

WordPress-Admin-Bildschirm sehr langsam/Zeitüberschreitung beim Bearbeiten oder Hinzufügen einer neuen Seite/verwendeten Post

Ich bin neu auf der Website, freue mich aber über jede Hilfe, die Sie geben können.

Ich habe ein WordPress-Setup, das (zu Recht oder zu Unrecht) Hunderte von Seiten und Tausende von anderen benutzerdefinierten Beitragstypen enthält, die ebenfalls auf einer Seite basieren (dh hierarchisch).

Beim Versuch, eine neue Seite oder einen benutzerdefinierten Beitragstyp hinzuzufügen (oder einen vorhandenen zu bearbeiten), wird der Bildschirm zum Bearbeiten der Seite, wenn überhaupt, extrem langsam geladen.

Normalerweise tritt eine Zeitüberschreitung bei der Markierung im Feld "Attribute" auf (manchmal wird die gesamte Seite geladen, manchmal nicht, aber im Grunde genommen ist sie entweder extrem unbrauchbar oder überhaupt nicht verwendbar).

Ich gehe davon aus, dass das Zeitlimit überschritten wird, da im Hierarchiemenü (im Feld "Attribute") so viele Elemente geladen werden müssen.

Ich verstehe, dass es für WP vielleicht nicht optimal ist, so viele Seiten auf diese Weise zu verwenden, aber dies ist die Situation, in der sich die Site gerade befindet, und ich kann sie nicht leicht ändern (und leider ist die Fähigkeit erforderlich, eine Seite innerhalb einer bestimmten Hierarchie zu platzieren) Ich kann das Feld Attribute nicht einfach vor dem Administrator verbergen.

Auf lange Sicht muss die Site möglicherweise neu aufgebaut werden, um nur Posts zu verwenden. Ich kann jedoch im Moment nichts tun, um WordPress dabei zu helfen, die Bearbeitungsseite vollständig zu laden und/oder zu beschleunigen.

Irgendwelche htaccess/php.ini-Hacks (ich habe ein paar ausprobiert, wie das Erhöhen der Speichergröße/Ausführungszeit, schien aber nicht zu helfen) oder irgendetwas anderes, von dem Sie denken, dass ich es versuchen kann (ich bin offen für fast jede Idee), etwas in MYSQL, um es vielleicht zwischenzuspeichern (ich bin leider kein Experte in diesem Bereich)

Schätzen Sie wirklich jede Hilfe, die Sie geben können

Danke, Nick

PS: WordPress 3.2.1 PPS Ich habe auch versucht, die Permalink-Struktur zu bearbeiten, sodass% post-name nicht enthalten ist, aber das hat PPPS nicht geholfen. Ich habe auch versucht, die Site zu duplizieren und auf die neueste Beta von WordPress 3.3 zu aktualisieren aber immer noch das gleiche PPPPS Die Site befindet sich auf einem Rackspace Sites Cloud Server

Außerdem ... habe ich versucht, das Feld "Attribute" zu deaktivieren und nur die Schnellbearbeitungsfunktion auf den Seiten zu verwenden, die einen Teil des Administrators auflistet, um die Hierarchie zu steuern. Dies reagiert jedoch vermutlich nicht, weil es sich aufgrund desselben Problems um eine Zeitüberschreitung handelt Leider schafft es meine vorübergehende Umgehungsidee auch nicht wirklich, Prost.

5
Nick Davis

Das Problem liegt ein bisschen woanders. WordPress erstellt eine Seitenhierarchie, um das Auswahlfeld post_parent auszufüllen. Bei vielen Seiten kann diese Funktion etwas langsam sein (manchmal ist sie sehr langsam).

Was können Sie dagegen tun?

Sie können das Meta-Feld für WordPress-Standardseitenattribute mit folgendem Code deaktivieren:

if (is_admin()) :
function my_remove_meta_boxes() {
    remove_meta_box('pageparentdiv', 'page', 'side');
}
add_action( 'admin_menu', 'my_remove_meta_boxes' );
endif;

Wenn Sie die Hierarchie dieser Seiten festlegen müssen (post_parent für Seiten festlegen), können Sie dies dennoch tun. Fügen Sie einfach Ihre benutzerdefinierte Meta-Box hinzu und platzieren Sie dort eine Auswahlbox mit einer Liste von Seiten. Sie müssen jedoch sicherstellen, dass Ihre Abfrage (zum Auswählen dieser Seiten) effizienter ist (Listen Sie Seiten ohne Hierarchie auf und wählen Sie nur title und page_id oder ähnliches aus).

PS. Schauen Sie sich den WP-Quellcode an, um zu sehen, warum er bei vielen Seiten langsam sein kann ... Er verwendet get_pages mit dem Argument hierarchical, das auf true gesetzt ist. Es benutzt dann get_page_children und es ist keine sehr effiziente Funktion ...

1

Das mag zwar nicht helfen, aber es kann nicht schaden, es zu versuchen ... Melden Sie sich in Ihrem Serveradministrationsbereich an, rufen Sie die Client-Oberfläche für Ihre Datenbankverwaltung auf (z. B. phpMyAdmin), löschen Sie alle Beiträge, deren Typ als markiert ist eine Revision, dann komprimieren Sie die Tabelle.

Wenn Sie Tausende von Seiten haben, können auch Millionen von Überarbeitungen Ihren Zugriff verlangsamen.

1
user10418

Ich hatte die gleiche Ausgabe über 5000 Seiten, was einige Zeit in Anspruch nahm. Das Problem waren Seitenattribute, die wp_dropdown_pages verwendeten -> alle Seiten laden!

Da ich immer noch die Möglichkeit brauchte, Vorlagen zu verwenden, konnte ich es nicht lösen, wenn ich nur Seitenattribute entfernte.

Und da ich nicht direkt in Kerndateien hacken möchte, bestand meine Lösung darin, meine eigene Version von Seitenattributen (aus Kerndateien) zu entfernen und wieder zu aktivieren.

// Override of Page Attribute meta box
// This is because the load time of wp_dropdown_pages(), which is removed in our version.
// (original: page_attributes_meta_box() in wp-admin/includes/meta-boxes.php)

// Remove the original meta box
add_action( 'admin_menu', 'custom_remove_meta_box');
function custom_remove_meta_box(){
    remove_meta_box('pageparentdiv', 'page', 'side');
}

// Add our own meta box instead
add_action( 'add_meta_boxes', 'cuustom_add_meta_box');
function custom_add_meta_box() {
    add_meta_box('pageparentdiv', __('Page Attributes') , 'custom_page_attributes_meta_box', 'page', 'side');
}

// Use custom page attributes meta box, no need to load dropdown with pages!
function custom_page_attributes_meta_box($post) {
    if ( 'page' == $post->post_type && 0 != count( get_page_templates( $post ) ) ) {
        $template = !empty($post->page_template) ? $post->page_template : false;
      ?>
        <p><strong><?php _e('Template') ?></strong></p>
        <label class="screen-reader-text" for="page_template"><?php _e('Page Template') ?></label>
        <select name="page_template" id="page_template">
            <option value='default'><?php _e('Default Template'); ?></option>
            <?php page_template_dropdown($template); ?>
        </select>
      <?php
    } 
  ?>
    <p><strong><?php _e('Order') ?></strong></p>
    <p><label class="screen-reader-text" for="menu_order"><?php _e('Order') ?></label><input name="menu_order" type="text" size="4" id="menu_order" value="<?php echo esc_attr($post->menu_order) ?>" /></p>
    <p><?php if ( 'page' == $post->post_type ) _e( 'Need help? Use the Help tab in the upper right of your screen.' ); ?></p>
  <?php
}
0
Henric