Wie erstellt man mehrere virtuelle Seiten?

Nur ein kurzer Überblick über das “Warum” dieser Seite – hat zwei Abschnitte, jeweils ein unterschiedliches Thema (mit dem jonradio multiple theme plugin). Es gibt eine anständige Menge an Inhalten, die in beiden Bereichen doppelt vorhanden ist. Anstatt zwei Kopien einer Reihe von Seiten zu verwalten (eigentlich Produkte zu werben, aber das ist nicht besonders relevant), möchte ich dieselbe Seite unter mehreren URLs anzeigen.

Als ein kurzes Beispiel betrachten Sie diese URLs (abzüglich des Host-Teils), wobei “Produkt” eine Seite und Widget1 und Widget2 Kinder dieser Seite sind:

/ Produkt / Widget1 / Produkt / Widget2

Ich möchte dann diese URLs auch den gleichen Inhalt anzeigen lassen, wobei “widgetworld” die übergeordnete Seite ist:

/ widgetworld / widget1 / widgetworld / widget2

Was am einfachsten aussieht, um einen virtuellen Satz von Seiten zu erstellen, ist entweder mit der 404-Vorlage zu spielen, um “/ widgetworld / somepage” zu erfassen, die nicht wirklich existiert, und dann die richtige Seite nachzuschlagen und den Benutzer dorthin zu schicken oder in den 404-Handler einhaken und dasselbe tun.

Hier ist, was ich habe, und es funktioniert. Es fühlt sich einfach ein wenig zu hackisch an. Aus der functions.php des Themas:

is_404 ) // page not found? OK, let's check again { $wp_query->is_404 = false; $cUrl="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; $targetUrl=""; switch($cUrl) { /* sample code had some other conditions, just using this */ default : { $pathTrimmed = trim($cUrl, '/'); // normalise with no leading or trailing slash $pathTokens = explode('/', $pathTrimmed); // get segments delimited by a slash $lastpath=end($pathTokens); $template= get_template_directory() . '/prodtest.php'; $window_title = 'test passing var to template'; if ($template) { load_template($template); die; } } } } } add_action( 'wp', 'site404_router'); ?> 

Und prodtest.php:

  1, 'post_type' => 'product', // woo 'name' => "$lastpath", ); // run the query $query = new WP_Query($params); $posts = $query->posts; foreach($posts as $post){ // output some info, just testing $id = $post->ID; echo "ID: " . $post->ID . "
"; echo "post_title: " . $post->post_title . "
"; echo "post_date: " . $post->post_date . "
"; echo "post_name: " . $post->post_name . "
"; echo "post_content: " . $post->post_content . "
"; echo "product_image_gallery: "; $gallery = get_post_meta( $id, '_product_image_gallery'); print_r($gallery); echo "
lead time: " . get_field('lead_time'); //do_action( 'woocommerce_product_thumbnails' ); } wp_reset_postdata(); ?>

Ist das eine gute Methode? Ich sehe einige Probleme zu beheben:

  • Stellen Sie sicher, dass die URL sauber ist
  • Ändern Sie den Status als Antwort auf ‘200’
  • Handle echte 404 richtig

Interessiert an irgendwelchen alternativen Methoden, aber diese erschreckt mich noch nicht vollständig. Beachten Sie, dass es viele Möglichkeiten gibt, nur eine einzige virtuelle “Seite” zu erstellen, aber das sind wirklich nur ein oder zwei Seiten, nicht eine ganze Reihe davon.

Solutions Collecting From Web of "Wie erstellt man mehrere virtuelle Seiten?"