• Hallo,

    ich suche dringend nach einer Lösung, eine String-Variable mit preg_replace() auszufiltern. Ich arbeite gerade an einer Worpress-Installation und möchte ein Menü in eine typische Footer-Navigation umwandeln.

    Dazu habe ich mit der Funktion wp_nav_menu() das Menü in eine Variable $footer_menu ausgelesen, die folgende Werte zurückgibt:

    <ul class="bla">
    <li class="bla"> | <a href="#">Link 1</a></li>
    <li class="bla"> | <a href="#">Link 2</a></li>
    <li class="bla"> | <a href="#">Link 3</a></li>
    </ul>

    Danach habe ich das Ganze durch preg_replace() durchlaufen lassen. Mit den Expressions kenne ich mich nicht wirklich aus, muss ich zugeben:

    echo preg_replace( array( '#^<ul[^>]*>#', '#</ul>$#', '#^<li[^>]*>#', '#</li>$#' ), '', $footer_menu, -1 );

    Herauskommen sollte folgendes:

    | <a href="#">Link 1</a>
     | <a href="#">Link 2</a>
     | <a href="#">Link 3</a>

    Leider wurde nur das ul und das erste li entfernt. Die restlichen li’s sind immernoch drin. Kann mir da mal jemand mit den Expressions helfen? Vielen Dank schon mal im Vorraus.

Ansicht von 1 Antwort (von insgesamt 1)
  • Thread-Starter mirkoschubert

    (@mirkoschubert)

    Super, ich hab inzwischen über ein anderes Forum eine Lösung erhalten 🙂

    Für alle, die wie ich aus einem zweiten wp_nav_menu() eine Footer-Navigation für Datenschutz, Impressum und Co. machen wollen, hier nochmal die komplette Lösung:

    if (function_exists('wp_nav_menu')) {
    	$footer_menu = wp_nav_menu( array( 'theme_location' => 'secondary-menu', 'container' => '', 'fallback_cb' => '', 'menu_class' => $menuClass, 'before' => ' | ', 'echo' => false ) );
    	echo preg_replace( array('/<(\/)?ul[^>]*>/','/<(\/)?li[^>]*>/' ), '', $footer_menu);
    }

    Dabei wird das Menü ausgelesen und der Strich vorher mit eingefügt. (Bei mir sind vorher noch die Credits von WordPress, deshalb ist auch der erste Strich in Ordnung) Danach werden alle ul- und li-Elemente durch preg_replace entfernt. Voila!

    Das fertige Menü sieht dann in etwa so aus:

    Powered by WordPress | Jobs | Datenschutz | Nutzungsbedingungen | Impressum

    Natürlich abhängig davon, was Ihr in das Menü eintragt 😉

Ansicht von 1 Antwort (von insgesamt 1)
  • Das Thema „Menü anpassen mit preg_replace“ ist für neue Antworten geschlossen.