Das Entfernen von strip_tags funktioniert nicht in nav_menu_description

Also füge ich Beschreibungen zu den Hauptmenüs meiner Seite hinzu. Überprüft das Feld, fügte den Text hinzu. In einer benutzerdefinierten Walker in functions.php abgelegt. Wird in einem wp_nav_menu-Aufruf in header.php gelöscht, um den benutzerdefinierten Walker aufzurufen. Text zu den Beschreibungen hinzugefügt.

Alles gut … aber dann entschied ich, dass ich Pausen via HTML hinzufügen wollte … Verdammt, sie werden ausgestreift. Oh, richtig, ich muss diesen Filter ausschalten. So mache ich, über die richtige Zeile in functions.php. Nur, es funktioniert nicht. Der HTML-Code wird weiterhin entfernt.

Bevor ich weitermache, hier ist der Rollator, den ich mit der Filterentfernungslinie benutze:

#new walker to enable description text under menu items. class description_walker extends Walker_Nav_Menu { function start_el(&$output, $item, $depth, $args) { global $wp_query; $indent = ( $depth ) ? str_repeat( "\t", $depth ) : ''; $class_names = $value = ''; $classes = empty( $item->classes ) ? array() : (array) $item->classes; $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) ); $class_names = ' class="'. esc_attr( $class_names ) . '"'; $output .= $indent . '
  • ID . '"' . $value . $class_names .'>'; $attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) .'"' : ''; $attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) .'"' : ''; $attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) .'"' : ''; $attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : ''; $description = ! empty( $item->description ) ? '' : ''; if($depth != 0) { $description = $append = $prepend = ""; } $item_output = $args->before; $item_output .= ''; $item_output .= $args->link_before .$prepend.apply_filters( 'the_title', $item->title, $item->ID ).$append; $item_output .= $description.$args->link_after; $item_output .= ''; $item_output .= $args->after; $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args ); } } ## Function to stop HTML removal from menu descriptions remove_filter('nav_menu_description', 'strip_tags');
  • Weitere Informationen: Der HTML-Code wird in der database gespeichert, also ist er dort vorhanden … nur nicht in der Ausgabe. Dies ist in WordPress 3.3. Hier ist der Code, der das Menü in header.php aufruft:

       'primary', 'depth' => 0, 'walker' => new description_walker()) ); ?> 

    Ich habe das sinkende Gefühl, dass ich etwas Grundlegendes vermisse und nur ein neues Paar Augen brauche … irgendwelche Ideen?

    Solutions Collecting From Web of "Das Entfernen von strip_tags funktioniert nicht in nav_menu_description"

    In einer neuen WordPress-Version ist der remove_filter nicht genug, weil der desc hardcore von post_content entfernt wird …

    Das wird den Trick machen:

     remove_filter('nav_menu_description', 'strip_tags'); add_filter( 'wp_setup_nav_menu_item', 'cus_wp_setup_nav_menu_item' ); function cus_wp_setup_nav_menu_item($menu_item) { $menu_item->description = apply_filters( 'nav_menu_description', $menu_item->post_content ); return $menu_item; } 

    Das Problem ist nicht die DB enthält nicht die HTML, der Filter scheint zu arbeiten, um die Informationen gespeichert, das Problem ist, dass die Menü-Verwaltung Seite HTML-Streifen, es ist in den Walker geschrieben, der diese Seite anzeigt.

    Schauen Sie sich hier Zeile 167 an.
    http://core.trac.wordpress.org/browser/tags/3.3/wp-admin/includes/nav-menu.php#L164

    HTML wird bei der Anzeige mit Escapezeichen versehen, da es natürlich nicht HTML unterstützt. Ich bin nicht sicher, wo genau das bei der Anzeige des Navigationsmenüs angezeigt wird, aber ein kleines Debugging und Dumping der Variablen $item führt zu einer Erkennung.

    $item->post_content die Beschreibung, aber mit dem HTML !! … verwenden Sie das anstelle von $item->description und Sie sollten das Ergebnis erhalten, nach dem Sie $item->description ..;)

    Ich hoffe, das hilft.. 🙂