[wp-trac] [WordPress Trac] #60366: add call_for_blog for easy to switch blog and restore in multisite

WordPress Trac noreply at wordpress.org
Mon Jan 29 09:48:09 UTC 2024


#60366: add call_for_blog  for easy to switch blog and restore in multisite
-------------------------+-----------------------------
 Reporter:  denishua     |      Owner:  (none)
     Type:  enhancement  |     Status:  new
 Priority:  normal       |  Milestone:  Awaiting Review
Component:  General      |    Version:
 Severity:  normal       |   Keywords:
  Focuses:               |
-------------------------+-----------------------------
 add call_for_blog  for easy to switch blog and restore in multisite

 {{{
 function call_for_blog($blog_id, $callback, ...$args){
         try{
                 $switched       = (is_multisite() && $blog_id && $blog_id
 != get_current_blog_id()) ? switch_to_blog($blog_id) : false;

                 return call_user_func_array($callback, $args);
         }finally{
                 if($switched){
                         restore_current_blog();
                 }
         }
 }
 }}}

 usage:


 {{{
 call_for_blog(123, 'wp_update_post', ['ID'=>$id, 'post_title'=>$title]);
 }}}

 closure callback:

 {{{
 for_blog($shop_blog_id, function($id, $title){
         $result = some_function();

         if(is_wp_error($result)){
                 return $result;
         }

         $result = some_other_function();

         if(is_wp_error($result)){
                 return $result;
         }

         return wp_update_post(['ID'=>$id, 'post_title'=>$title]);
 }, $id, $title);
 }}}

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/60366>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list