Move plugin API to plugin.php. #2525
git-svn-id: https://develop.svn.wordpress.org/trunk@3893 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
c0ad03e0c8
commit
2c8931c55d
@ -561,142 +561,6 @@ function is_new_day() {
|
||||
}
|
||||
}
|
||||
|
||||
// Filters: these are the core of WP's plugin architecture
|
||||
|
||||
function merge_filters($tag) {
|
||||
global $wp_filter;
|
||||
if ( isset($wp_filter['all']) ) {
|
||||
foreach ($wp_filter['all'] as $priority => $functions) {
|
||||
if ( isset($wp_filter[$tag][$priority]) )
|
||||
$wp_filter[$tag][$priority] = array_merge($wp_filter['all'][$priority], $wp_filter[$tag][$priority]);
|
||||
else
|
||||
$wp_filter[$tag][$priority] = array_merge($wp_filter['all'][$priority], array());
|
||||
$wp_filter[$tag][$priority] = array_unique($wp_filter[$tag][$priority]);
|
||||
}
|
||||
}
|
||||
|
||||
if ( isset($wp_filter[$tag]) )
|
||||
ksort( $wp_filter[$tag] );
|
||||
}
|
||||
|
||||
function apply_filters($tag, $string) {
|
||||
global $wp_filter;
|
||||
|
||||
$args = array_slice(func_get_args(), 2);
|
||||
|
||||
merge_filters($tag);
|
||||
|
||||
if ( !isset($wp_filter[$tag]) ) {
|
||||
return $string;
|
||||
}
|
||||
foreach ($wp_filter[$tag] as $priority => $functions) {
|
||||
if ( !is_null($functions) ) {
|
||||
foreach($functions as $function) {
|
||||
|
||||
$all_args = array_merge(array($string), $args);
|
||||
$function_name = $function['function'];
|
||||
$accepted_args = $function['accepted_args'];
|
||||
|
||||
if ( $accepted_args == 1 )
|
||||
$the_args = array($string);
|
||||
elseif ( $accepted_args > 1 )
|
||||
$the_args = array_slice($all_args, 0, $accepted_args);
|
||||
elseif ( $accepted_args == 0 )
|
||||
$the_args = NULL;
|
||||
else
|
||||
$the_args = $all_args;
|
||||
|
||||
$string = call_user_func_array($function_name, $the_args);
|
||||
}
|
||||
}
|
||||
}
|
||||
return $string;
|
||||
}
|
||||
|
||||
function add_filter($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
|
||||
global $wp_filter;
|
||||
|
||||
// check that we don't already have the same filter at the same priority
|
||||
if ( isset($wp_filter[$tag]["$priority"]) ) {
|
||||
foreach($wp_filter[$tag]["$priority"] as $filter) {
|
||||
// uncomment if we want to match function AND accepted_args
|
||||
// if ( $filter == array($function, $accepted_args) ) {
|
||||
if ( $filter['function'] == $function_to_add ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// So the format is wp_filter['tag']['array of priorities']['array of ['array (functions, accepted_args)]']
|
||||
$wp_filter[$tag]["$priority"][] = array('function'=>$function_to_add, 'accepted_args'=>$accepted_args);
|
||||
return true;
|
||||
}
|
||||
|
||||
function remove_filter($tag, $function_to_remove, $priority = 10, $accepted_args = 1) {
|
||||
global $wp_filter;
|
||||
|
||||
// rebuild the list of filters
|
||||
if ( isset($wp_filter[$tag]["$priority"]) ) {
|
||||
$new_function_list = array();
|
||||
foreach($wp_filter[$tag]["$priority"] as $filter) {
|
||||
if ( $filter['function'] != $function_to_remove ) {
|
||||
$new_function_list[] = $filter;
|
||||
}
|
||||
}
|
||||
$wp_filter[$tag]["$priority"] = $new_function_list;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// The *_action functions are just aliases for the *_filter functions, they take special strings instead of generic content
|
||||
|
||||
function do_action($tag, $arg = '') {
|
||||
global $wp_filter;
|
||||
$extra_args = array_slice(func_get_args(), 2);
|
||||
if ( is_array($arg) )
|
||||
$args = array_merge($arg, $extra_args);
|
||||
else
|
||||
$args = array_merge(array($arg), $extra_args);
|
||||
|
||||
merge_filters($tag);
|
||||
|
||||
if ( !isset($wp_filter[$tag]) ) {
|
||||
return;
|
||||
}
|
||||
foreach ($wp_filter[$tag] as $priority => $functions) {
|
||||
if ( !is_null($functions) ) {
|
||||
foreach($functions as $function) {
|
||||
|
||||
$function_name = $function['function'];
|
||||
$accepted_args = $function['accepted_args'];
|
||||
|
||||
if ( $accepted_args == 1 ) {
|
||||
if ( is_array($arg) )
|
||||
$the_args = $arg;
|
||||
else
|
||||
$the_args = array($arg);
|
||||
} elseif ( $accepted_args > 1 ) {
|
||||
$the_args = array_slice($args, 0, $accepted_args);
|
||||
} elseif ( $accepted_args == 0 ) {
|
||||
$the_args = NULL;
|
||||
} else {
|
||||
$the_args = $args;
|
||||
}
|
||||
|
||||
$string = call_user_func_array($function_name, $the_args);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
|
||||
add_filter($tag, $function_to_add, $priority, $accepted_args);
|
||||
}
|
||||
|
||||
function remove_action($tag, $function_to_remove, $priority = 10, $accepted_args = 1) {
|
||||
remove_filter($tag, $function_to_remove, $priority, $accepted_args);
|
||||
}
|
||||
|
||||
function update_post_cache(&$posts) {
|
||||
global $post_cache;
|
||||
|
||||
@ -951,24 +815,6 @@ function nocache_headers() {
|
||||
@ header('Pragma: no-cache');
|
||||
}
|
||||
|
||||
function register_activation_hook($file, $function) {
|
||||
$file = plugin_basename($file);
|
||||
|
||||
add_action('activate_' . $file, $function);
|
||||
}
|
||||
|
||||
function register_deactivation_hook($file, $function) {
|
||||
$file = plugin_basename($file);
|
||||
|
||||
add_action('deactivate_' . $file, $function);
|
||||
}
|
||||
|
||||
function plugin_basename($file) {
|
||||
$file = preg_replace('|\\\\+|', '\\\\', $file);
|
||||
$file = preg_replace('/^.*wp-content[\\\\\/]plugins[\\\\\/]/', '', $file);
|
||||
return $file;
|
||||
}
|
||||
|
||||
function get_num_queries() {
|
||||
global $wpdb;
|
||||
return $wpdb->num_queries;
|
||||
|
168
wp-includes/plugin.php
Normal file
168
wp-includes/plugin.php
Normal file
@ -0,0 +1,168 @@
|
||||
<?php
|
||||
|
||||
//
|
||||
// Filter functions, the core of the WP plugin architecture.
|
||||
//
|
||||
|
||||
function add_filter($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
|
||||
global $wp_filter;
|
||||
|
||||
// check that we don't already have the same filter at the same priority
|
||||
if ( isset($wp_filter[$tag]["$priority"]) ) {
|
||||
foreach($wp_filter[$tag]["$priority"] as $filter) {
|
||||
// uncomment if we want to match function AND accepted_args
|
||||
// if ( $filter == array($function, $accepted_args) ) {
|
||||
if ( $filter['function'] == $function_to_add ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// So the format is wp_filter['tag']['array of priorities']['array of ['array (functions, accepted_args)]']
|
||||
$wp_filter[$tag]["$priority"][] = array('function'=>$function_to_add, 'accepted_args'=>$accepted_args);
|
||||
return true;
|
||||
}
|
||||
|
||||
function apply_filters($tag, $string) {
|
||||
global $wp_filter;
|
||||
|
||||
$args = array_slice(func_get_args(), 2);
|
||||
|
||||
merge_filters($tag);
|
||||
|
||||
if ( !isset($wp_filter[$tag]) ) {
|
||||
return $string;
|
||||
}
|
||||
foreach ($wp_filter[$tag] as $priority => $functions) {
|
||||
if ( !is_null($functions) ) {
|
||||
foreach($functions as $function) {
|
||||
|
||||
$all_args = array_merge(array($string), $args);
|
||||
$function_name = $function['function'];
|
||||
$accepted_args = $function['accepted_args'];
|
||||
|
||||
if ( $accepted_args == 1 )
|
||||
$the_args = array($string);
|
||||
elseif ( $accepted_args > 1 )
|
||||
$the_args = array_slice($all_args, 0, $accepted_args);
|
||||
elseif ( $accepted_args == 0 )
|
||||
$the_args = NULL;
|
||||
else
|
||||
$the_args = $all_args;
|
||||
|
||||
$string = call_user_func_array($function_name, $the_args);
|
||||
}
|
||||
}
|
||||
}
|
||||
return $string;
|
||||
}
|
||||
|
||||
|
||||
function merge_filters($tag) {
|
||||
global $wp_filter;
|
||||
if ( isset($wp_filter['all']) ) {
|
||||
foreach ($wp_filter['all'] as $priority => $functions) {
|
||||
if ( isset($wp_filter[$tag][$priority]) )
|
||||
$wp_filter[$tag][$priority] = array_merge($wp_filter['all'][$priority], $wp_filter[$tag][$priority]);
|
||||
else
|
||||
$wp_filter[$tag][$priority] = array_merge($wp_filter['all'][$priority], array());
|
||||
$wp_filter[$tag][$priority] = array_unique($wp_filter[$tag][$priority]);
|
||||
}
|
||||
}
|
||||
|
||||
if ( isset($wp_filter[$tag]) )
|
||||
ksort( $wp_filter[$tag] );
|
||||
}
|
||||
|
||||
|
||||
|
||||
function remove_filter($tag, $function_to_remove, $priority = 10, $accepted_args = 1) {
|
||||
global $wp_filter;
|
||||
|
||||
// rebuild the list of filters
|
||||
if ( isset($wp_filter[$tag]["$priority"]) ) {
|
||||
$new_function_list = array();
|
||||
foreach($wp_filter[$tag]["$priority"] as $filter) {
|
||||
if ( $filter['function'] != $function_to_remove ) {
|
||||
$new_function_list[] = $filter;
|
||||
}
|
||||
}
|
||||
$wp_filter[$tag]["$priority"] = $new_function_list;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//
|
||||
// Action functions
|
||||
//
|
||||
|
||||
function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
|
||||
add_filter($tag, $function_to_add, $priority, $accepted_args);
|
||||
}
|
||||
|
||||
function do_action($tag, $arg = '') {
|
||||
global $wp_filter;
|
||||
$extra_args = array_slice(func_get_args(), 2);
|
||||
if ( is_array($arg) )
|
||||
$args = array_merge($arg, $extra_args);
|
||||
else
|
||||
$args = array_merge(array($arg), $extra_args);
|
||||
|
||||
merge_filters($tag);
|
||||
|
||||
if ( !isset($wp_filter[$tag]) ) {
|
||||
return;
|
||||
}
|
||||
foreach ($wp_filter[$tag] as $priority => $functions) {
|
||||
if ( !is_null($functions) ) {
|
||||
foreach($functions as $function) {
|
||||
|
||||
$function_name = $function['function'];
|
||||
$accepted_args = $function['accepted_args'];
|
||||
|
||||
if ( $accepted_args == 1 ) {
|
||||
if ( is_array($arg) )
|
||||
$the_args = $arg;
|
||||
else
|
||||
$the_args = array($arg);
|
||||
} elseif ( $accepted_args > 1 ) {
|
||||
$the_args = array_slice($args, 0, $accepted_args);
|
||||
} elseif ( $accepted_args == 0 ) {
|
||||
$the_args = NULL;
|
||||
} else {
|
||||
$the_args = $args;
|
||||
}
|
||||
|
||||
$string = call_user_func_array($function_name, $the_args);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function remove_action($tag, $function_to_remove, $priority = 10, $accepted_args = 1) {
|
||||
remove_filter($tag, $function_to_remove, $priority, $accepted_args);
|
||||
}
|
||||
|
||||
//
|
||||
// Functions for handling plugins.
|
||||
//
|
||||
|
||||
function plugin_basename($file) {
|
||||
$file = preg_replace('|\\\\+|', '\\\\', $file);
|
||||
$file = preg_replace('/^.*wp-content[\\\\\/]plugins[\\\\\/]/', '', $file);
|
||||
return $file;
|
||||
}
|
||||
|
||||
function register_activation_hook($file, $function) {
|
||||
$file = plugin_basename($file);
|
||||
|
||||
add_action('activate_' . $file, $function);
|
||||
}
|
||||
|
||||
function register_deactivation_hook($file, $function) {
|
||||
$file = plugin_basename($file);
|
||||
|
||||
add_action('deactivate_' . $file, $function);
|
||||
}
|
||||
|
||||
?>
|
@ -112,6 +112,7 @@ else
|
||||
wp_cache_init();
|
||||
|
||||
require (ABSPATH . WPINC . '/functions.php');
|
||||
require (ABSPATH . WPINC . '/plugin.php');
|
||||
require (ABSPATH . WPINC . '/default-filters.php');
|
||||
require_once (ABSPATH . WPINC . '/l10n.php');
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user