Action und Filter kombinieren?

Ich habe versucht, verschiedene Video-Oembed-Größe für Inhalt und Sidebar einzurichten. Ich kann Videogröße mit embed_defaults Filter einstellen. Aber dieser Filter funktioniert für die gesamte Site und ich muss kleinere Videogröße in meiner Sidebar haben. Also habe ich versucht, eine Aktion zu loop_start hinzuzufügen und hier zu überprüfen, ob die Hauptschleife läuft.

function test_main_loop( $query ) { global $wp_the_query; if ( $query === $wp_the_query ) { add_filter( 'embed_defaults', 'big_embed_defaults' ); } else { add_filter( 'embed_defaults', 'small_embed_defaults' ); } } add_action( 'loop_start', 'test_main_loop' ); 

Kann ich add_filter () innerhalb der function add_action () aufrufen? Alles funktioniert, aber ich bin mir nicht sicher, ob es die richtige Lösung ist? Oder hast du eine andere Idee, wie man verschiedene Videogrößen nur mit WordPress oembed support (ohne Plugin) erreichen kann? Danke für Ihre Hilfe…

Solutions Collecting From Web of "Action und Filter kombinieren?"

Eine bessere Lösung wäre das Hinzufügen der Filter-Hooks vor dem eigentlichen Aufruf in der Vorlage und das Entfernen des Themas, wenn Sie die Bedeutung in Ihrem Theme erreicht haben, bevor Sie Ihre Sidebar mit dynamic_sidebar oder was immer Sie verwenden:

 add_filter( 'embed_defaults', 'small_embed_defaults' ); dynamic_sidebar('my_sidebar'); remove_filter( 'embed_defaults', 'small_embed_defaults' ); 

und das gleiche mit deiner Hauptschleife:

 add_filter( 'embed_defaults', 'big_embed_defaults' ); while(have_posts()){ //YOUR LOOP... } remove_filter( 'embed_defaults', 'big_embed_defaults' );