it-swarm.com.de

Wie ändere ich die Reihenfolge (Priorität) der registrierten Filter (oder Aktionen) (z. B. für den Inhalt)?

Gibt es eine Möglichkeit, die Reihenfolge der Filter für z. the_content bevor sie angewendet werden? Was ich derzeit habe, sind die folgenden Ideen:

/**
 * Print all filters for some hook.
 */
function print_filters_for( $hook = '' ) {
    global $wp_filter;
    if( empty( $hook ) || !isset( $wp_filter[$hook] ) )
        return;

    print '<pre>';
    print_r( $wp_filter[$hook] );
    print '</pre>';
}

add_action('template_redirect','print_filters');

function print_filters() {
    print_r(print_filters_for('the_content'));die;
}

Das gibt mir die Filter, aber mir fällt keine bequeme Möglichkeit ein, ihre Prioritäten zu ändern.

add_filter( 'the_content', 'my_content_filter_priority_reorder', 0 );

function my_content_filter_priority_reorder($the_content) {
    // reorder filter priorities
    return $the_content;
}

Hat jemand dieses Problem schon gehabt und weiß, wie man dies möglicherweise ändern kann?

1
Blackbam

Wenn Sie den vorhandenen Rückruf und die vorhandene Priorität kennen, können Sie die Filter einfach entfernen und sie mit einer anderen Priorität erneut hinzufügen:

remove_filter( 'the_content', 'convert_smilies', 20 );
add_filter( 'the_content', 'convert_smilies', 30 );

remove_filter( 'the_content', 'capital_P_dangit', 11 );
add_filter( 'the_content', 'capital_P_dangit', 20 );
2
Jacob Peattie