WordPress.org

Make WordPress Core

Changeset 3893


Ignore:
Timestamp:
06/20/06 02:03:24 (9 years ago)
Author:
ryan
Message:

Move plugin API to plugin.php. #2525

Location:
trunk
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/functions.php

    r3885 r3893  
    562562} 
    563563 
    564 // Filters: these are the core of WP's plugin architecture 
    565  
    566 function merge_filters($tag) { 
    567     global $wp_filter; 
    568     if ( isset($wp_filter['all']) ) { 
    569         foreach ($wp_filter['all'] as $priority => $functions) { 
    570             if ( isset($wp_filter[$tag][$priority]) ) 
    571                 $wp_filter[$tag][$priority] = array_merge($wp_filter['all'][$priority], $wp_filter[$tag][$priority]); 
    572             else 
    573                 $wp_filter[$tag][$priority] = array_merge($wp_filter['all'][$priority], array()); 
    574             $wp_filter[$tag][$priority] = array_unique($wp_filter[$tag][$priority]); 
    575         } 
    576     } 
    577  
    578     if ( isset($wp_filter[$tag]) ) 
    579         ksort( $wp_filter[$tag] ); 
    580 } 
    581  
    582 function apply_filters($tag, $string) { 
    583     global $wp_filter; 
    584  
    585     $args = array_slice(func_get_args(), 2); 
    586  
    587     merge_filters($tag); 
    588  
    589     if ( !isset($wp_filter[$tag]) ) { 
    590         return $string; 
    591     } 
    592     foreach ($wp_filter[$tag] as $priority => $functions) { 
    593         if ( !is_null($functions) ) { 
    594             foreach($functions as $function) { 
    595  
    596                 $all_args = array_merge(array($string), $args); 
    597                 $function_name = $function['function']; 
    598                 $accepted_args = $function['accepted_args']; 
    599  
    600                 if ( $accepted_args == 1 ) 
    601                     $the_args = array($string); 
    602                 elseif ( $accepted_args > 1 ) 
    603                     $the_args = array_slice($all_args, 0, $accepted_args); 
    604                 elseif ( $accepted_args == 0 ) 
    605                     $the_args = NULL; 
    606                 else 
    607                     $the_args = $all_args; 
    608  
    609                 $string = call_user_func_array($function_name, $the_args); 
    610             } 
    611         } 
    612     } 
    613     return $string; 
    614 } 
    615  
    616 function add_filter($tag, $function_to_add, $priority = 10, $accepted_args = 1) { 
    617     global $wp_filter; 
    618  
    619     // check that we don't already have the same filter at the same priority 
    620     if ( isset($wp_filter[$tag]["$priority"]) ) { 
    621         foreach($wp_filter[$tag]["$priority"] as $filter) { 
    622             // uncomment if we want to match function AND accepted_args 
    623             // if ( $filter == array($function, $accepted_args) ) { 
    624             if ( $filter['function'] == $function_to_add ) { 
    625                 return true; 
    626             } 
    627         } 
    628     } 
    629  
    630     // So the format is wp_filter['tag']['array of priorities']['array of ['array (functions, accepted_args)]'] 
    631     $wp_filter[$tag]["$priority"][] = array('function'=>$function_to_add, 'accepted_args'=>$accepted_args); 
    632     return true; 
    633 } 
    634  
    635 function remove_filter($tag, $function_to_remove, $priority = 10, $accepted_args = 1) { 
    636     global $wp_filter; 
    637  
    638     // rebuild the list of filters 
    639     if ( isset($wp_filter[$tag]["$priority"]) ) { 
    640         $new_function_list = array(); 
    641         foreach($wp_filter[$tag]["$priority"] as $filter) { 
    642             if ( $filter['function'] != $function_to_remove ) { 
    643                 $new_function_list[] = $filter; 
    644             } 
    645         } 
    646         $wp_filter[$tag]["$priority"] = $new_function_list; 
    647     } 
    648     return true; 
    649 } 
    650  
    651 // The *_action functions are just aliases for the *_filter functions, they take special strings instead of generic content 
    652  
    653 function do_action($tag, $arg = '') { 
    654     global $wp_filter; 
    655     $extra_args = array_slice(func_get_args(), 2); 
    656     if ( is_array($arg) ) 
    657         $args = array_merge($arg, $extra_args); 
    658     else 
    659         $args = array_merge(array($arg), $extra_args); 
    660  
    661     merge_filters($tag); 
    662  
    663     if ( !isset($wp_filter[$tag]) ) { 
    664         return; 
    665     } 
    666     foreach ($wp_filter[$tag] as $priority => $functions) { 
    667         if ( !is_null($functions) ) { 
    668             foreach($functions as $function) { 
    669  
    670                 $function_name = $function['function']; 
    671                 $accepted_args = $function['accepted_args']; 
    672  
    673                 if ( $accepted_args == 1 ) { 
    674                     if ( is_array($arg) ) 
    675                         $the_args = $arg; 
    676                     else 
    677                         $the_args = array($arg); 
    678                 } elseif ( $accepted_args > 1 ) { 
    679                     $the_args = array_slice($args, 0, $accepted_args); 
    680                 } elseif ( $accepted_args == 0 ) { 
    681                     $the_args = NULL; 
    682                 } else { 
    683                     $the_args = $args; 
    684                 } 
    685  
    686                 $string = call_user_func_array($function_name, $the_args); 
    687             } 
    688         } 
    689     } 
    690 } 
    691  
    692 function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) { 
    693     add_filter($tag, $function_to_add, $priority, $accepted_args); 
    694 } 
    695  
    696 function remove_action($tag, $function_to_remove, $priority = 10, $accepted_args = 1) { 
    697     remove_filter($tag, $function_to_remove, $priority, $accepted_args); 
    698 } 
    699  
    700564function update_post_cache(&$posts) { 
    701565    global $post_cache; 
     
    952816} 
    953817 
    954 function register_activation_hook($file, $function) { 
    955     $file = plugin_basename($file); 
    956  
    957     add_action('activate_' . $file, $function); 
    958 } 
    959  
    960 function register_deactivation_hook($file, $function) { 
    961     $file = plugin_basename($file); 
    962  
    963     add_action('deactivate_' . $file, $function); 
    964 } 
    965  
    966 function plugin_basename($file) { 
    967     $file = preg_replace('|\\\\+|', '\\\\', $file); 
    968     $file = preg_replace('/^.*wp-content[\\\\\/]plugins[\\\\\/]/', '', $file); 
    969     return $file; 
    970 } 
    971  
    972818function get_num_queries() { 
    973819    global $wpdb; 
  • trunk/wp-settings.php

    r3870 r3893  
    113113 
    114114require (ABSPATH . WPINC . '/functions.php'); 
     115require (ABSPATH . WPINC . '/plugin.php'); 
    115116require (ABSPATH . WPINC . '/default-filters.php'); 
    116117require_once (ABSPATH . WPINC . '/l10n.php'); 
Note: See TracChangeset for help on using the changeset viewer.