it-swarm.com.de

Seitenvorlage programmatisch wechseln?

Ich möchte einen sehr einfachen Schalter erstellen, um meine Site in einen Wartungsmodus zu versetzen. Dazu möchte ich einen Administrationsbereich hinzufügen, um eine Vorlage zu definieren, die die Wartungsseite ist, und dieser Seite erlauben, die von der Datenbank definierte Vorlage zu überschreiben, wenn der Wartungsmodus aktiviert ist.

Wie kann ich die aufgerufene Designvorlage für jede Seite ändern, OHNE die Datenbank zu beeinflussen?

2
Mild Fuzz

sie können den Aktions-Hook template_redirect verwenden, um Ihre Vorlagendatei für den Wartungsmodus mithilfe einer einfachen Option in der Optionsdatenbank in PHP einzuschließen.

Wenn Sie den Wartungsmodus aktivieren, fügen Sie eine Option hinzu, zum Beispiel:

add_option('maintenance_mode_on');

mit diesem Code prüfen Sie, ob diese Option aktiviert ist, und leiten Sie in diesem Fall zu Ihrer gewünschten Vorlagendatei weiter:

function custom_maintenance_mode_template_redirect() {
    global $wp;
    if(get_option('maintenance_mode_on')){
        status_header(200); // a 404 code will not be returned in the HTTP headers if the page does not exists

        include(TEMPLATEPATH . "/Custom_template.php"); // include the corresponding template
        die();
    }
}
add_action( 'template_redirect', 'custom_maintenance_mode_template_redirect' );

Wenn Sie den Wartungsmodus deaktivieren, löschen Sie diese Option:

delete_option('maintenance_mode_on');

Aktualisieren

Wenn Sie die body_class() ausführen möchten, können Sie body_class filter hook verwenden:

function custom_body_class($classes){
    if(get_option('maintenance_mode_on')){
            $n_classes[] = "maintenance";
        return $n_classes;
    } else {
        return $classes;
    }
}

add_filter('body_class', 'custom_body_class');

Dadurch wird body_class () so geändert, dass maintenance ausgegeben wird, wenn der Wartungsmodus aktiviert ist.

1
Bainternet