add_action in den Loop-Hooks

Ich habe folgende Struktur:

add_action('my_content', 'standard_loop'); function standard_loop() { if (have_posts()) : while (have_posts()) : the_post(); do_action('loop_entry_before'); do_action('loop_entry'); do_action('loop_entry_after'); endwhile; endif; } add_action('loop_entry_before', 'do_entry', 1); function do_entry() { if ( get_the_title() ) { add_action('loop_entry_before', 'function_that_adds_h2_structure'); } add_action('loop_entry_entry', 'function_that_adds_content_structure'); } 

Das Problem ist, dass alle Post die function_that_adds_h2_structure anzeigt, auch wenn es nur leeres HTML ist und der Beitrag keinen Titel hat. Dies ist nur ein Beispiel für die Verwendung von login in do_entry ();

Vielen Dank

Solutions Collecting From Web of "add_action in den Loop-Hooks"

Sobald eine function mit einer Aktion verknüpft wurde, wird die function bei jedem do_action der Aktion (mit do_action ) ausgeführt. Um dies zu stoppen, sollte die Aktion entfernt werden. Siehe remove_action :

 function do_entry() { if ( get_the_title() ) { add_action('loop_entry_before', 'function_that_adds_h2_structure'); } else { remove_action('loop_entry_before', 'function_that_adds_h2_structure'); } add_action('loop_entry_entry', 'function_that_adds_content_structure'); } 

In Ihrem Fall denke ich, dass die Aktionen Hook-Ansatz nicht sehr gut ist und es kann besser sein, direkte functionsaufrufe zu tun:

 function do_entry() { if ( get_the_title() ) { function_that_adds_h2_structure(); } add_action('loop_entry_entry', 'function_that_adds_content_structure'); }