it-swarm.com.de

Erstellen Sie integrierte Seiten, ohne tatsächliche Seiten zu erstellen

Zum Beispiel:

site.com/contact (oder site.com/?page=contact, wenn keine Permalinks verwendet werden)

wenn jemand zu dieser Seite geht, möchte ich eine Designvorlage wie page-contact.php laden.

Ich möchte für diese Arbeit jedoch keine Seite im Dashboard erstellen. Wie kann ich das intern in functions.php machen?

Ich weiß, es ist möglich, weil das BBPress-Plugin es irgendwie für die/Benutzer/Seiten macht, die keine Standard-WordPress-Seiten sind ...

4
Emma

Dies ist die Technik, die ich gerade auf einer Website verwende. Dabei wird eine Abfragevariable für "Vorlage" registriert und ein Endpunkt namens "/contact" registriert, der intern in "?template=contact" umgeschrieben wird. Dann prüfen Sie einfach am Hook template_redirect, ob diese Abfragevariable vorhanden ist, und geben Sie die Seitenvorlage an, die Sie laden und beenden möchten.

/* Add a query var for template select, and and endpoint that sets that query var */
add_action( 'init', 'wpse22543_rewrite_system' );

function wpse22543_rewrite_system() {
    global $wp, $wp_rewrite;
    $wp->add_query_var( 'template' );   
    add_rewrite_endpoint( 'contact', EP_ROOT );
    $wp_rewrite->add_rule(  '^/contact/?$', 
                            'index.php?template=contact', 'bottom' );
    $wp_rewrite->flush_rules();
    }


/* Handle template redirect according the template being queried. */
add_action( 'template_redirect', 'wpse22543_select_template' );

function wpse22543_select_template() {
    global $wp;
    $template = $wp->query_vars;

    if ( array_key_exists( 'template', $template ) && 
        'contact' == $template['template'] ) {
        /* Make sure to set the 404 flag to false, and redirect 
               to the contact page template. */
        global $wp_query;
        $wp_query->set( 'is_404', false );
        include( get_stylesheet_directory().'/contact.php' );
        exit;
        }
    }

Dadurch wird Ihre contact.php-Datei für alle Anfragen nach? Template = contact oder/contact bereitgestellt.

Es gibt wahrscheinlich einen schnelleren Weg, aber das funktioniert. Hier ist ein ausführlicheres Tutorial: Erstelle gefälschte Seiten in WordPress .

6
goldenapples

Sie können dies genauso tun, wie Sie gesagt haben. Es ist seit 2.9 in die Vorlagenhierarchie von Wordpress integriert.

Wenn Sie eine Seite mit dem Namen Contact haben, erstellen Sie eine Seitenvorlage mit dem Namen page-contact.php, die sich von page.php unterscheidet. Und voila, es funktioniert.

Aus WP Dokumentation.

Vorlagen nach Seiten-ID oder Seiten-Slug

Sie können verschiedene Archive "Seite" mit ID oder Slug in Ihrem Namen verwenden. Nur mit Version 2.9 verfügbar.

beispiele:

page-{id}.php
page-{slug}.php

Wolltest du das?

0
danielwiener