it-swarm.com.de

Wie hebe ich das Menü für eine untergeordnete Seite hervor?

EDIT: Das war früher

Wie erzwinge ich, dass eine Seite is_archive == true ist?

Ich habe versucht, das falsche Problem zu lösen. Anstatt die Veröffentlichung/Seite zu einem bestimmten Attribut zu zwingen, hätte ich mir die Klassen ansehen sollen, die auf den Menüeintrag angewendet wurden. Auf den Menüpunkt 'Blog' wird die Klasse current-page-ancestor angewendet. Darauf aufbauend kann ich das Menü stylen.

URSPRÜNGLICHE FRAGE:

Ich habe ein eigenes Thema, in dem ich eine archives.php-Vorlage erstellt habe, um eine Seite zu haben, die versucht, die verschiedenen Möglichkeiten zum Anzeigen von Archiven aufzulisten und Benutzern die Möglichkeit zu geben, die Archive zu durchsuchen, wenn sie dies möchten.

Ich habe eine Seite mit der Administrationsseite WP erstellt und als übergeordnete Seite die Seite "Blog" festgelegt. Die Seite "Blog" ist die Seite, auf der alle meine Beiträge veröffentlicht werden. Ich habe oben ein Menü und im Moment bewirkt jede Unterseite unter der Seite "Blog", dass das Menü "Blog" hervorhebt (dies ist das richtige Verhalten). Auf das Menüelement wird insbesondere der Stil current_page_* angewendet. Dies passiert nicht, wenn Sie blog/archives laden (die Vorlage/Seite, die ich im ersten Absatz erstellt habe).

Wenn ich also auf das Datum eines Blogposts klicke, werde ich zu einer archivierten Post-Seite weitergeleitet, die so aussieht (beachten Sie, dass das Blog-Menüelement hervorgehoben ist):

Archived Date Posts

Wenn ich zu meinen Archiven gehe, sieht es so aus (beachte, dass der Menüpunkt NICHT hervorgehoben ist):

Archives Page

Ich schaute auf $wp_query, um zu sehen, was der Unterschied war. Ich habe gesehen, dass is_archive oder is_home in den Fällen zutrifft, in denen der Menüpunkt korrekt formatiert wurde.

Wie erzwinge ich, dass meine Seite is_archive == true ist? Ich habe versucht, vor dem Aufruf von $wp_query->set('is_archive', 1); eine get_header(); in meine Vorlage einzufügen, aber das hat nicht funktioniert. Ich habe auch im Admin-Dashboard von WP nachgeschlagen, ob es etwas gibt, auf das ich klicken kann, um zu erzwingen, dass die Seite als Archiv betrachtet wird.

Bearbeiten: Um klar zu sein, ich suche nach einer WP Lösung. Ich weiß, dass ich das CSS hart codieren kann, um das Menüelement so darzustellen, wie ich es haben möchte, aber das scheint nicht das Richtige zu sein.

2
Avery Chan

Gemäß der Änderung in der Frage lautet die Antwort darauf:

  1. Schauen Sie sich die CSS-Klassen an, die auf den gewünschten Menüpunkt angewendet werden.
  2. Auf den Menüpunkt, von dem diese Seite ein Kind sein soll, sollte current-page-ancestor angewendet werden.
  3. Nehmen Sie die entsprechenden Änderungen in Ihrem Stylesheet vor, um das Menü zu formatieren, wenn diese Klasse angezeigt wird.
1
Avery Chan

Die archives.php-Vorlagendatei ist eine benutzerdefinierte Seitenvorlagendatei für eine statische Seite . Die Bedingungen is_archive() und is_home() gelten für ein Blogpost-Archiv bzw. ein Blogpost-Index . Sie sind also neverwird is_archive() dazu bringen, true zurückzugeben, während die Ausgabe von archives.php angezeigt wird.

Damit Ihre archives.php statische Seite im Menü angezeigt wird:

  1. Erstellen Sie eine neue statische Seite mit einem beliebigen Namen, z. "Archive" (aber es ist völlig willkürlich)
  2. Weisen Sie dieser statischen Seite die benutzerdefinierte Seitenvorlage archives.php zu
  3. Fügen Sie diese statische Seite Ihrem benutzerdefinierten Navigationsmenü hinzu

Dann sollte es im Menü richtig hervorgehoben werden.

1
Chip Bennett

Ist es Ihre Sorge, wenn auf einer Archivseite der Blog-Tab hervorgehoben wird? - Alex Thomas vor 38 Minuten


Ja. Das ist alles, worüber ich mich Sorgen mache. Ich nehme an, eine einfache Möglichkeit, dies umzuformulieren, besteht darin, dass meine benutzerdefinierte Vorlagenseite nicht als Archivseite erkannt wird. - Avry vor 18 Minuten

Wenn dies der Fall ist, könnten Sie ein wenig grob sein und einfach den Stil des Blog-Tabs in Ihrer Vorlage archives.php festlegen, indem Sie entweder <style>...</style> verwenden oder dem Blog-Tab die ausgewählte Klasse mit jquery zuweisen:

$('#blogtabid').addClass('selectedclass');

Wie ist es damit?

0
Alex Thomas

Sie haben Recht, zum Objekt $wp_query zu wechseln.

$wp_query->is_archive = true;

0
two7s_clash

Ich bin kürzlich auf so etwas gestoßen, um Begriffe hervorzuheben, wenn ein einzelner Beitrag aktiv ist, und um ehrlich zu sein, musste ich dafür ein paar Suchanfragen verwenden. Es ist nicht schön, aber es funktioniert jetzt. Wordpress fehlt diese Funktion, der ich zustimme saugt Sie können immer eine Funktion verwenden, um es für bestimmte Seiten zu laden.

Beispiel:

function wpse_20163_navstyle() {
    if(is_archive()) { ?>
        <script type="text/javascript">
        jQuery(document).ready(function(){
            jQuery('#blogtabid').addClass('selectedclass');
        });
        </script>
    <? }
add_action('wp_head','wpse_20163_navstyle')

Auch wenn Sie den $wp_query verwenden möchten, stellen Sie sicher, dass Sie auch einen globalen Code haben

global $wp_query; und dann kannst du $wp_query->is_archive = true;

0
xLRDxREVENGEx