228 lines
8.9 KiB
PHP
Executable File
228 lines
8.9 KiB
PHP
Executable File
<?php
|
|
|
|
// plugins.php
|
|
// plugin interface
|
|
|
|
// This is EXACTLY a copy & paste from wordpress
|
|
|
|
// 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);
|
|
//added by NoWhereMan
|
|
ksort($wp_filter[$tag]["$priority"]);
|
|
return true;
|
|
}
|
|
|
|
function remove_filter($tag, $function_to_remove, $priority = 10, $accepted_args = 1) {
|
|
global $wp_filter;
|
|
|
|
$new_function_list = array();
|
|
|
|
// rebuild the list of filters
|
|
if (isset($wp_filter[$tag]["$priority"])) {
|
|
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);
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// WordPress hooks
|
|
//----------------------------------------------------------------------------
|
|
/*
|
|
Current Hooks For Actions
|
|
This is a comprehensive list of plugin hooks in the core distribution of WordPress as of version 1.5 beta 1.
|
|
|
|
NOTE: the following list is not a comprehensive listing of hooks available in 1.5 final. See Skippy's list (http://codex.wordpress.org/User:Skippy) for a more comprehensive, if less descriptive, listing of actions and filters.
|
|
|
|
admin_footer
|
|
No parameter. Executes at the end of the admin panel inside the body tag. Useful for insertion of additional content.
|
|
admin_head
|
|
No parameter. Executes in the <head> section of the admin panel. Useful for insertion of additional content.
|
|
admin_menu
|
|
No parameter. Executes after the basic admin panel menu structure is in place. Useful for adding additional menus to the admin panel.
|
|
comment_closed
|
|
Receives the comment's post ID as a parameter. Executes when attempting to display the comment form for a post that has closed comments.
|
|
comment_form
|
|
Receives the comment's post ID as a parameter. Template tag. Executes after displaying the comment form for a post that allows comments.
|
|
comment_id_not_found
|
|
Receives the comment's post ID as a parameter. Executes when attempting to display the comment form for a post that does not exist.
|
|
comment_post
|
|
Receives the comment ID as a parameter. Executes when a comment is added through wp-comments.php.
|
|
delete_comment
|
|
Receives the comment ID as a parameter. Executes when a comment is deleted.
|
|
delete_post
|
|
Receives the post ID as a parameter. Executes whenever a post is deleted.
|
|
edit_comment
|
|
Receives the comment ID as a parameter. Executes whenever a comment is edited.
|
|
edit_form_advanced
|
|
No parameter. Executes during the display of the admin panel's advanced editing page, just before the <div> is closed that contains the post content textarea. Useful for inserting additional input fields into the advanced editing form.
|
|
edit_page_form
|
|
No parameter. Executes inside the <form> tag on the page editing form. Useful for inserting additional input fields in the page editing form.
|
|
edit_post
|
|
Receives the post ID as a parameter. Executes every time a post is edited.
|
|
generate_rewrite_rules
|
|
No parameter. Executes whenever the rewrite rules are recomputed. To modify the computed rules, use the filter rewrite_rules_array instead.
|
|
init
|
|
Executes after WordPress has finished loading but before any headers are sent. Useful for intercepting $_GET or $_POST triggers.
|
|
pingback_post
|
|
Receives the comment ID as a parameter. Executes when a comment is added via XMLRPC.
|
|
private_to_published
|
|
Receives the post ID as a parameter. Executes when a post is moved from private to published status.
|
|
publish_phone
|
|
Receives the post ID as a parameter. Executes when a post is added via wp-mail.php.
|
|
publish_post
|
|
Receives the post ID as a parameter. Executes when a post is saved and its status is set to "publish", regardless of its prior setting. NOTE: to add a hook to this action in 1.2, be sure to specify a priority between 0 and 9. The generic_ping hook is buggy and prevents any lesser priority hooks from working.
|
|
save_post
|
|
Receives the post ID as a parameter. Executes when a post is saved to the database.
|
|
shutdown
|
|
No parameter. Executes when the page output is complete.
|
|
simple_edit_form
|
|
No parameter. Executes during the display of the admin panel's simple editing page, just before the <div> is closed that contains the post content textarea. Useful for inserting additional input fields into the simple editing form.
|
|
switch_theme
|
|
Receives the name of the current theme as a parameter. Executes when the blog theme is changed.
|
|
template_redirect
|
|
No parameter. Executes before the determination of the template file to be used to display the requested page. Useful for providing additional templates based on request criteria. Example (pedagogical, not useful): Redirect all requests to the all.php template file in the current themes' directory.
|
|
function all_on_one () {
|
|
include(TEMPLATEPATH . '/all.php');
|
|
exit;
|
|
}
|
|
|
|
add_action('template_redirect', 'all_on_one');
|
|
trackback_post
|
|
Receives the comment ID as a parameter. Executes when a comment is added via trackback.php.
|
|
wp_footer
|
|
No parameter. Template tag. Executes at the end of the <body> tag. Useful for insertion of additional content.
|
|
wp_head
|
|
No parameter. Executes in the <head> section. Useful for insertion of additional content.
|
|
wp_meta
|
|
No parameter. Executes in the <li>Meta</li> section of the included Theme's sidebar.php's. Useful for insertion of additional content.
|
|
wp_set_comment_status
|
|
Receives the comment ID as a parameter. Executes when the comment status changes.
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
?>
|