$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); } ?>