[wp-trac] [WordPress Trac] #6970: Add_feed - bug and fix - Replacing callback function

WordPress Trac wp-trac at lists.automattic.com
Wed May 14 12:00:03 GMT 2008


#6970: Add_feed - bug and fix - Replacing callback function
------------------------------------+---------------------------------------
 Reporter:  programming.has.no.com  |       Owner:  anonymous
     Type:  defect                  |      Status:  new      
 Priority:  high                    |   Milestone:  2.6      
Component:  General                 |     Version:  2.5.1    
 Severity:  normal                  |    Keywords:  add_feed 
------------------------------------+---------------------------------------
 When adding a feed using add_feed (wp-includes/rewrite.php) you can not
 replace the callback function with a one with a different name, as this
 will try to remove a callback that doesn't exist, thus remove_action
 fails. Adding a $remove_function to the function variables and checking
 for its presence and removing the correct callback function fixes this.

 buggy version
 function add_feed($feedname, $function) {
         global $wp_rewrite;
         if (!in_array($feedname, $wp_rewrite->feeds)) { //override the
 file if it is
                 $wp_rewrite->feeds[] = $feedname;
         }
         $hook = 'do_feed_' . $feedname;
         remove_action($hook, $function, 10, 1);
         add_action($hook, $function, 10, 1);
         return $hook;
 }



 fixed version
 function add_feed($feedname, $function, $remove_function="") {
         global $wp_rewrite;
         if (!in_array($feedname, $wp_rewrite->feeds)) { //override the
 file if it is
                 $wp_rewrite->feeds[] = $feedname;
         }
         $hook = 'do_feed_' . $feedname;
         if($remove_function != "") remove_action($hook, $remove_function,
 10, 1);
         else remove_action($hook, $function, 10, 1);
         add_action($hook, $function, 10, 1);
         return $hook;
 }

-- 
Ticket URL: <http://trac.wordpress.org/ticket/6970>
WordPress Trac <http://trac.wordpress.org/>
WordPress blogging software


More information about the wp-trac mailing list