zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden WordPress - Titel vom Vorfahren in Menü in der Seitenleiste ausgeben

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 04.01.2013, 13:29
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 06.10.2007
Ort: Rheinland-Pfalz
Beiträge: 326
darkiop wird schon bald berühmt werden
Frage WordPress - Titel vom Vorfahren in Menü in der Seitenleiste ausgeben

Hallo,

ich gebe in meiner Seitenleiste eine Liste mit untergeordneten Seiten aus:

Code:
<?php
/* Untermenü Seitenleiste
 * http://codex.wordpress.org/Function_Reference/wp_list_pages#List_whole_subpages
 */
if (!is_search() && !is_404()) :

  $ancestor_title = get_the_title($post->post_ancestor);

  if(!$post->post_parent){
    // will display the subpages of this top level page
    $children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0&sort_column=post_title"); // sort_column: post_title = ABC, menu_order = wp-admin
  } else {
    // diplays only the subpages of parent level
    $children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0");
    if($post->ancestors) {
      // now you can get the the top ID of this page
      // wp is putting the ids DESC, thats why the top level ID is the last one
      $ancestors = end($post->ancestors);
      $children = wp_list_pages("title_li=&child_of=".$ancestors."&echo=0&sort_column=post_title");
      // you will always get the whole subpages list
    }
  }
  if ($children) { ?>
<div class="ym-grid">
  <div class="ym-gbox">
    <h6 class="ym-vtitle"><?php echo $ancestor_title; ?></h6>
    <ul class="ym-vlist ym-clearfix">
      <?php echo $children; ?>
    </ul>
  </div>
</div>
<?php
  }
endif; ?>
In der <h6> sollte der Titel der übergeordneten Seite stehen.

Zur Zeit sieht das Ergebniss so aus:


Was muss ich machen, damit im Titel nicht "Termine 2013" sondern "Veranstaltungen" ausgegeben wird?

Ich hatte das selbe vor ein paar Wochen schon einmal im wpde.org Forum gefragt, bin allerdings bisher noch nicht weitergekommen - hier die Verlinkung in den entsprechenden Thread.
__________________
Mein Blog | Hier im Forum: FAQ

Viele Grüße, Thorsten
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 04.01.2013, 15:40
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
Standard

Ich vermute mal du bist in einem Template-File und dort innerhalb des Loops oder eines singulären Posts!?

Mach mal ein var_dump auf $post. Wenn es das Post-Object von WP ist, wird es keine Eigenschaft 'ancestor' oder 'post_ancestor' haben. Wenn Du das übergeordnete Post des aktuellen haben möchtest, schau in $post->post_parent nach. Dort findest Du die ID des übergeordneten Posts oder 0, wenn es keins gibt. Prüfe, ob der wert ungleich 0 ist und dann kannst du mit get_the_title() oder get_post() arbeiten.
Noch ein Hinweis: Du kannst die Argumente an wp_list_pages auch in Form eines Arrays übergeben. Das ganze ist besser lesbar und lässt sich besser warten.
__________________
github | http://dnaber.de

Geändert von David (04.01.2013 um 15:44 Uhr)
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 04.01.2013, 16:15
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 06.10.2007
Ort: Rheinland-Pfalz
Beiträge: 326
darkiop wird schon bald berühmt werden
Standard

Hallo David,

Vielen Dank für deine Hilfe.

Die Funktion befindet sich in der sidebar.php

Ich kann allerdings erst heut Abend bzw. morgen Früh deine Vorschläge testen.

Melde mich dann wieder.
__________________
Mein Blog | Hier im Forum: FAQ

Viele Grüße, Thorsten
Mit Zitat antworten
  #4 (permalink)  
Alt 05.01.2013, 12:46
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 06.10.2007
Ort: Rheinland-Pfalz
Beiträge: 326
darkiop wird schon bald berühmt werden
Standard

Guten Morgen,

deine Tipps habe mir geholfen! Die Argumente hab ich jetzt auch als Array übergeben. Vielen Dank dafür.

Eine Frage ist bei dem ganzen allerdings noch aufgetaucht:

Im ursprünglichen Skript wurden die Vorfahren mit $post->ancestors abgerufen. Wenn ich einen var_dump auf $post mache, gibt es da kein Feld ancestors - Woher stammt diese die Information?
Ich habe jetzt zum besseren Verständnis das ganze mit get_post_ancestors() gelöst. Beide Wege haben den gleichen Inhalt (in meinem Fall ein Array mit 2 ID's).

[PHP] Untermenü Seitenleiste - Pastebin.com

Code:
<?php
/* Untermenü Seitenleiste
 * http://codex.wordpress.org/Function_Reference/wp_list_pages#List_whole_subpages
 */
if (!is_search() && !is_404()) :

  if (!$post->post_parent) {
    $ancestor_title = get_post($post);
    $ancestor_title = $ancestor_title->post_title;
  }

  if ($post->ancestors) {
    $ancestor_title = $post->ancestors;
    $ancestor_title = end($ancestor_title);
    $ancestor_title = get_the_title( $ancestor_title );
    #debugVar($ancestor_title);
  }

  if (!$post->post_parent){
    // will display the subpages of this top level page
    $args = array(
      'title_li'     => '',
      'child_of'     => $post->ID,
      'echo'         => 0,
      'sort_column'  => 'post_title'
    );
    $children = wp_list_pages($args);
  } else {
    $ancestors = get_post_ancestors( $post->ID );
    #debugVar($ancestors);
    /*
    debugVar($post);
    $ancestors2 = $post->ancestors;
    debugVar($ancestors2);
    */
    $ancestors = end($ancestors);
    $args = array(
      'title_li'     => '',
      'child_of'     => $ancestors,
      'echo'         => 0,
      'sort_column'  => 'post_title'
    );
    $children = wp_list_pages($args);
  }
  if ($children) { ?>
<div class="ym-grid">
  <div class="ym-gbox">
    <h6 class="ym-vtitle"><?php echo $ancestor_title; ?></h6>
    <ul class="ym-vlist ym-clearfix">
      <?php echo $children; ?>
    </ul>
  </div>
</div>
<?php
  }
endif; ?>
__________________
Mein Blog | Hier im Forum: FAQ

Viele Grüße, Thorsten
Mit Zitat antworten
  #5 (permalink)  
Alt 05.01.2013, 15:03
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 12.11.2010
Ort: Bad Langensalza
Beiträge: 733
gabischatz ist in Verruf geraten
Standard

Hi, Um die Post Vorfahren (auch Eltern) zu bekommen verwende einfach die get_post_ancestors () -Funktion. Diese Funktion nimmt ein einziges Argument, das entweder die Post-ID oder nach Objekt sein kann, und sendet die Vorfahren ID als Array.
PHP-Code:
$ancestors get_post_ancestors($post); 
und hier noch zwei Funktionen die in die functions.php einfügen kannst.
PHP-Code:
// Prüfen, ob Seite direktes Kind ist
function is_child($page_id) { 
    global 
$post
    if( 
is_page() && ($post->post_parent == $page_id) ) {
       return 
true;
    } else { 
       return 
false
    }
}

// Prüfen, ob Seite ein Vorfahre ist
function is_ancestor($post_id) {
    global 
$wp_query;
    
$ancestors $wp_query->post->ancestors;
    if ( 
in_array($post_id$ancestors) ) {
        return 
true;
    } else {
        return 
false;
    }

die Ausgabe erfolgt dann mit
PHP-Code:
$ancestor_title get_the_title(get_post_ancestors$post->ID )) 
wenn ich mich jetzt nicht irre.
MfG
Mit Zitat antworten
  #6 (permalink)  
Alt 06.01.2013, 00:37
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von darkiop Beitrag anzeigen
Eine Frage ist bei dem ganzen allerdings noch aufgetaucht:

Im ursprünglichen Skript wurden die Vorfahren mit $post->ancestors abgerufen. Wenn ich einen var_dump auf $post mache, gibt es da kein Feld ancestors - Woher stammt diese die Information?
Das würde mich auch interessieren.
__________________
github | http://dnaber.de
Mit Zitat antworten
Antwort

Stichwörter
ancestor, parent, untermenü, wordpress

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Standard Dropdown Menü in Wordpress Greyzed Theme tfoal CSS 0 07.09.2011 12:53
Darstellungsproblem flohpapa CSS 3 16.12.2009 09:55
Höhenproblem bei gruppiertem vertikalen div menü Mathias3107 CSS 1 22.11.2009 14:42
CD-Sammlung zu verkaufen Geronimo Offtopic 14 15.05.2009 22:35
Probleme beim ausdrucken clumsy CSS 11 09.12.2008 13:42


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:02 Uhr.