Wie kann ich Filter in meiner class anwenden, die Walker_Nav_Menu erweitert?

Ich habe folgenden abgekürzten Code:

target ) ? ' target="' . esc_attr( $item->target ) .'"' : ''; $attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : ''; $output .= '
  • '; $output .= apply_filters( 'the_title', 'modifyTitle', $item->ID ); $output .= '
  • '; } function modifyTitle($title){ return $title . asd; } } ?>

    Ist das der richtige Weg?

    Solutions Collecting From Web of "Wie kann ich Filter in meiner class anwenden, die Walker_Nav_Menu erweitert?"

    apply_filters() wendet eine Gruppe registrierter (mit add_filter() ) Callbacks an.

    Wenn Sie einen Filter anwenden, stellen Sie sicher, dass sein Name nicht zu den reservierten gehört , the_title sieht gefährlich “kollidierbar” mit anderen Filtern aus.

    Ihre Filteranwendung ist fast korrekt, aber das Bit ‘modifyTitle’ ist nicht erforderlich …

     // apply the filter apply_filters( 'wpse31787_the_title', $item->ID ); 

    … stattdessen müssen Sie während Ihrer Initialisierung einen Filter für wpse31787_the_title registrieren

     function __construct() { add_filter( 'wpse31787_the_title', array($this, 'modifyTitle') ); } 

    Und deine functionsdefinition wäre

     function modifyTitle( $item_id ) { // ...your code goes here } 

    Wenn Sie mehr als einen Parameter übergeben möchten, müssen Sie Ihren Filter-Zusatz wie folgt erweitern:

     // 2 arguments are expected add_filter( 'wpse31787_the_title', array($this, 'modifyTitle'), null, 2 ); 

    Also, wenn ich all die Bits zusammenfüge, hätte ich so etwas:

     class New_Walker_Nav_Menu extends Walker_Nav_Menu { function __construct() { add_filter( 'wpse31787_the_title', array($this, 'modifyTitle'), null, 2 ); } function start_el( &$output, $item, $depth, $args ) { $output .= apply_filters( 'wpse31787_the_title', $item->title ); } function modifyTitle( $title ){ return $title . ' < < '; } }