it-swarm.com.de

Seite nach Vorlage holen?

Ich bin in einer komplizierten Situation. Ich werde versuchen, es so einfach wie möglich zu erklären.

Stellen Sie sich folgende Seiten vor:

  • Seite 1
  • Seite 2
    • Unterseite 1
    • Unterseite 2
    • Unterseite 3

Jede Unterseite von Seite 2 listet Beiträge eines benutzerdefinierten Beitragstyps mit einer bestimmten Taxonomie auf. Nennen wir den Beitragstyp Objekte und die Taxonomie einfach Kategorien, um es einfach zu halten.

Um die verschiedenen Beiträge aus den verschiedenen Kategorien aufzulisten, habe ich drei verschiedene Seitenvorlagen für die Unterseiten: subpage-1-templ.php, subpage-2-templ.php und subpage-3-templ.php. Jede dieser Vorlagen listet die Beiträge einer bestimmten Kategorie für den Beitragstyp (Objekte) auf. Es ist fest codiert.

Soweit alles gut, es funktioniert wie erwartet. Es ist ein bisschen hässlich, es hart zu codieren, aber ich kenne keinen anderen Weg, also muss dies für den Moment funktionieren. (Ich würde es vorziehen, WordPress ganz fallen zu lassen, aber das ist eine andere Geschichte)

Alle diese Unterseiten listen die Geschwister in einem Untermenü auf. Wenn Sie sich also auf der Unterseite 2 befinden, werden die Unterseiten 1, 2 und 3 angezeigt (auf der Unterseite 2 befindet sich jedoch eine aktuelle Klasse). Funktioniert gut.

Nun zum eigentlichen Problem; Wenn Sie auf einen der auf einer Unterseite aufgelisteten Beiträge klicken, gelangen Sie zu einer Seite, auf der erwartungsgemäß weitere Informationen zum Beitrag angezeigt werden. Das Problem ist, dass ich dort das Untermenü für Seite 2 anzeigen möchte (also Unterseite 1, 2 und 3). Ich weiß nicht, wie ich das machen soll, ohne es fest zu codieren.

Vielleicht, und ich weiß nicht, ob das funktionieren wird, aber vielleicht kann ich eine Seite anhand ihrer Vorlage finden. Ich kann eine Vorlage für Seite 2 (nicht für Kinder, die eigentliche übergeordnete Seite) mit dem Namen objects-template.php erstellen. In einem Beitrag kann ich dann die Seite abrufen, auf der die Vorlage verwendet wird, alle untergeordneten Elemente abrufen und sie dann einfach auflisten . Ich weiß nur nicht, wie ich eine Seite anhand ihrer Vorlage erhalten soll, wenn dies überhaupt möglich ist (vorzugsweise anhand des Vorlagendateinamens, aber der Vorlagenname funktioniert auch).

Irgendwelche Vorschläge?

Bearbeiten

    // Query looks fine right?
    $query = new WP_Query(array(
        'meta_key' => '_wp_page_template',
        'meta_value' => 'objects-parent-page-template.php'
    ));
    // Dump the id (also tried just getting the object with get_queried_object(), still get null)
    echo '<pre>'; var_dump($query->get_queried_object_id()); die();
4
qwerty

Der Dateiname der Seitenvorlage wird als Post-Meta mit dem Schlüssel '_wp_page_template' gespeichert. Sie können also grundsätzlich get_post_meta($post_id, '_wp_page_template', true); verwenden, um den Vorlagendateinamen für die Seite mit der ID $post_id abzurufen.

Sie können auch den umgekehrten Vorgang ausführen (d. H. Die ID aus dem Dateinamen der Seitenvorlage abrufen), indem Sie Benutzerdefinierte Feldparameter in WP_Query oder andere WordPress-Funktionen verwenden.

Außerdem gibt es eine bedingte Funktion is_page_template , die prüft, ob die Vorlage der aktuellen Seite die im Parameter angegebene ist

Diese werden wahrscheinlich Ihr Problem lösen und möglicherweise dazu beitragen, das hartkodierte Zeug loszuwerden.

5
Mridul Aggarwal