2014-11-21 05:01:22 +01:00
|
|
|
<?php
|
2007-12-25 21:48:01 +01:00
|
|
|
/**
|
|
|
|
* Sets up the default filters and actions for most
|
|
|
|
* of the WordPress hooks.
|
|
|
|
*
|
|
|
|
* If you need to remove a default hook, this file will
|
|
|
|
* give you the priority for which to use to remove the
|
|
|
|
* hook.
|
|
|
|
*
|
|
|
|
* Not all of the default hooks are found in default-filters.php
|
|
|
|
*
|
|
|
|
* @package WordPress
|
|
|
|
*/
|
2005-02-07 08:46:41 +01:00
|
|
|
|
2007-08-21 00:50:04 +02:00
|
|
|
// Strip, trim, kses, special chars for string saves
|
2009-10-15 19:27:45 +02:00
|
|
|
foreach ( array( 'pre_term_name', 'pre_comment_author_name', 'pre_link_name', 'pre_link_target', 'pre_link_rel', 'pre_user_display_name', 'pre_user_first_name', 'pre_user_last_name', 'pre_user_nickname' ) as $filter ) {
|
2013-03-01 17:28:40 +01:00
|
|
|
add_filter( $filter, 'sanitize_text_field' );
|
|
|
|
add_filter( $filter, 'wp_filter_kses' );
|
2009-10-15 19:27:45 +02:00
|
|
|
add_filter( $filter, '_wp_specialchars', 30 );
|
2007-08-21 00:50:04 +02:00
|
|
|
}
|
|
|
|
|
2009-09-14 15:57:48 +02:00
|
|
|
// Strip, kses, special chars for string display
|
2009-10-15 19:27:45 +02:00
|
|
|
foreach ( array( 'term_name', 'comment_author_name', 'link_name', 'link_target', 'link_rel', 'user_display_name', 'user_first_name', 'user_last_name', 'user_nickname' ) as $filter ) {
|
2010-09-02 17:06:07 +02:00
|
|
|
if ( is_admin() ) {
|
|
|
|
// These are expensive. Run only on admin pages for defense in depth.
|
|
|
|
add_filter( $filter, 'sanitize_text_field' );
|
|
|
|
add_filter( $filter, 'wp_kses_data' );
|
|
|
|
}
|
2009-10-15 19:27:45 +02:00
|
|
|
add_filter( $filter, '_wp_specialchars', 30 );
|
2007-08-21 00:50:04 +02:00
|
|
|
}
|
|
|
|
|
2009-10-29 18:15:58 +01:00
|
|
|
// Kses only for textarea saves
|
|
|
|
foreach ( array( 'pre_term_description', 'pre_link_description', 'pre_link_notes', 'pre_user_description' ) as $filter ) {
|
2013-03-01 17:28:40 +01:00
|
|
|
add_filter( $filter, 'wp_filter_kses' );
|
2009-09-14 15:57:48 +02:00
|
|
|
}
|
|
|
|
|
2010-09-02 17:06:07 +02:00
|
|
|
// Kses only for textarea admin displays
|
|
|
|
if ( is_admin() ) {
|
2011-02-08 21:17:09 +01:00
|
|
|
foreach ( array( 'term_description', 'link_description', 'link_notes', 'user_description' ) as $filter ) {
|
2010-09-02 17:06:07 +02:00
|
|
|
add_filter( $filter, 'wp_kses_data' );
|
|
|
|
}
|
2011-02-08 21:17:09 +01:00
|
|
|
add_filter( 'comment_text', 'wp_kses_post' );
|
2009-10-29 18:15:58 +01:00
|
|
|
}
|
|
|
|
|
2009-09-14 15:57:48 +02:00
|
|
|
// Email saves
|
2009-10-15 19:27:45 +02:00
|
|
|
foreach ( array( 'pre_comment_author_email', 'pre_user_email' ) as $filter ) {
|
|
|
|
add_filter( $filter, 'trim' );
|
|
|
|
add_filter( $filter, 'sanitize_email' );
|
2013-03-01 17:28:40 +01:00
|
|
|
add_filter( $filter, 'wp_filter_kses' );
|
2007-08-21 00:50:04 +02:00
|
|
|
}
|
|
|
|
|
2010-09-02 17:06:07 +02:00
|
|
|
// Email admin display
|
2009-10-15 19:27:45 +02:00
|
|
|
foreach ( array( 'comment_author_email', 'user_email' ) as $filter ) {
|
|
|
|
add_filter( $filter, 'sanitize_email' );
|
2010-09-02 17:06:07 +02:00
|
|
|
if ( is_admin() )
|
|
|
|
add_filter( $filter, 'wp_kses_data' );
|
2009-09-14 15:57:48 +02:00
|
|
|
}
|
|
|
|
|
2007-10-03 18:16:55 +02:00
|
|
|
// Save URL
|
2009-10-15 19:27:45 +02:00
|
|
|
foreach ( array( 'pre_comment_author_url', 'pre_user_url', 'pre_link_url', 'pre_link_image',
|
2011-05-23 01:19:42 +02:00
|
|
|
'pre_link_rss', 'pre_post_guid' ) as $filter ) {
|
2009-10-15 19:27:45 +02:00
|
|
|
add_filter( $filter, 'wp_strip_all_tags' );
|
|
|
|
add_filter( $filter, 'esc_url_raw' );
|
|
|
|
add_filter( $filter, 'wp_filter_kses' );
|
2007-10-03 18:16:55 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Display URL
|
2011-05-23 01:19:42 +02:00
|
|
|
foreach ( array( 'user_url', 'link_url', 'link_image', 'link_rss', 'comment_url', 'post_guid' ) as $filter ) {
|
2010-09-02 17:06:07 +02:00
|
|
|
if ( is_admin() )
|
|
|
|
add_filter( $filter, 'wp_strip_all_tags' );
|
2009-10-15 19:27:45 +02:00
|
|
|
add_filter( $filter, 'esc_url' );
|
2010-09-02 17:06:07 +02:00
|
|
|
if ( is_admin() )
|
|
|
|
add_filter( $filter, 'wp_kses_data' );
|
2007-08-21 00:50:04 +02:00
|
|
|
}
|
2006-05-27 00:47:13 +02:00
|
|
|
|
2007-08-24 16:44:26 +02:00
|
|
|
// Slugs
|
2013-08-27 13:59:11 +02:00
|
|
|
add_filter( 'pre_term_slug', 'sanitize_title' );
|
2007-08-24 16:44:26 +02:00
|
|
|
|
2008-02-02 20:22:14 +01:00
|
|
|
// Keys
|
2012-03-21 16:04:00 +01:00
|
|
|
foreach ( array( 'pre_post_type', 'pre_post_status', 'pre_post_comment_status', 'pre_post_ping_status' ) as $filter ) {
|
2011-02-06 19:37:20 +01:00
|
|
|
add_filter( $filter, 'sanitize_key' );
|
|
|
|
}
|
2008-02-02 20:22:14 +01:00
|
|
|
|
2011-05-23 01:19:42 +02:00
|
|
|
// Mime types
|
|
|
|
add_filter( 'pre_post_mime_type', 'sanitize_mime_type' );
|
|
|
|
add_filter( 'post_mime_type', 'sanitize_mime_type' );
|
|
|
|
|
2005-02-07 08:46:41 +01:00
|
|
|
// Places to balance tags on input
|
2009-10-15 19:27:45 +02:00
|
|
|
foreach ( array( 'content_save_pre', 'excerpt_save_pre', 'comment_save_pre', 'pre_comment_content' ) as $filter ) {
|
2015-06-21 02:59:26 +02:00
|
|
|
add_filter( $filter, 'convert_invalid_entities' );
|
2009-10-15 19:27:45 +02:00
|
|
|
add_filter( $filter, 'balanceTags', 50 );
|
2007-08-21 00:50:04 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Format strings for display.
|
2009-10-15 19:27:45 +02:00
|
|
|
foreach ( array( 'comment_author', 'term_name', 'link_name', 'link_description', 'link_notes', 'bloginfo', 'wp_title', 'widget_title' ) as $filter ) {
|
2015-05-28 07:52:25 +02:00
|
|
|
add_filter( $filter, 'wptexturize' );
|
2009-10-15 19:27:45 +02:00
|
|
|
add_filter( $filter, 'convert_chars' );
|
|
|
|
add_filter( $filter, 'esc_html' );
|
2007-08-21 00:50:04 +02:00
|
|
|
}
|
|
|
|
|
2010-05-27 18:11:27 +02:00
|
|
|
// Format WordPress
|
2013-08-22 23:59:10 +02:00
|
|
|
foreach ( array( 'the_content', 'the_title', 'wp_title' ) as $filter )
|
2010-07-08 21:35:29 +02:00
|
|
|
add_filter( $filter, 'capital_P_dangit', 11 );
|
2010-10-21 00:44:15 +02:00
|
|
|
add_filter( 'comment_text', 'capital_P_dangit', 31 );
|
2010-05-27 18:11:27 +02:00
|
|
|
|
2010-03-17 17:27:25 +01:00
|
|
|
// Format titles
|
2010-05-24 00:56:51 +02:00
|
|
|
foreach ( array( 'single_post_title', 'single_cat_title', 'single_tag_title', 'single_month_title', 'nav_menu_attr_title', 'nav_menu_description' ) as $filter ) {
|
2015-05-28 07:52:25 +02:00
|
|
|
add_filter( $filter, 'wptexturize' );
|
2010-02-27 19:57:04 +01:00
|
|
|
add_filter( $filter, 'strip_tags' );
|
|
|
|
}
|
|
|
|
|
2007-09-20 20:23:33 +02:00
|
|
|
// Format text area for display.
|
2009-10-15 19:27:45 +02:00
|
|
|
foreach ( array( 'term_description' ) as $filter ) {
|
2015-05-28 07:52:25 +02:00
|
|
|
add_filter( $filter, 'wptexturize' );
|
2009-12-01 08:46:36 +01:00
|
|
|
add_filter( $filter, 'convert_chars' );
|
|
|
|
add_filter( $filter, 'wpautop' );
|
|
|
|
add_filter( $filter, 'shortcode_unautop');
|
2007-09-20 20:23:33 +02:00
|
|
|
}
|
|
|
|
|
2007-08-29 23:10:20 +02:00
|
|
|
// Format for RSS
|
2013-08-27 13:59:11 +02:00
|
|
|
add_filter( 'term_name_rss', 'convert_chars' );
|
2007-08-29 23:10:20 +02:00
|
|
|
|
2010-10-14 17:09:04 +02:00
|
|
|
// Pre save hierarchy
|
|
|
|
add_filter( 'wp_insert_post_parent', 'wp_check_post_hierarchy_for_loops', 10, 2 );
|
|
|
|
add_filter( 'wp_update_term_parent', 'wp_check_term_hierarchy_for_loops', 10, 3 );
|
|
|
|
|
2007-08-21 00:50:04 +02:00
|
|
|
// Display filters
|
2009-10-15 19:27:45 +02:00
|
|
|
add_filter( 'the_title', 'wptexturize' );
|
|
|
|
add_filter( 'the_title', 'convert_chars' );
|
|
|
|
add_filter( 'the_title', 'trim' );
|
2005-02-07 08:46:41 +01:00
|
|
|
|
2013-05-30 19:55:22 +02:00
|
|
|
add_filter( 'the_content', 'wptexturize' );
|
|
|
|
add_filter( 'the_content', 'convert_smilies' );
|
|
|
|
add_filter( 'the_content', 'convert_chars' );
|
|
|
|
add_filter( 'the_content', 'wpautop' );
|
|
|
|
add_filter( 'the_content', 'shortcode_unautop' );
|
|
|
|
add_filter( 'the_content', 'prepend_attachment' );
|
2005-02-07 08:46:41 +01:00
|
|
|
|
2009-12-01 08:46:36 +01:00
|
|
|
add_filter( 'the_excerpt', 'wptexturize' );
|
|
|
|
add_filter( 'the_excerpt', 'convert_smilies' );
|
|
|
|
add_filter( 'the_excerpt', 'convert_chars' );
|
|
|
|
add_filter( 'the_excerpt', 'wpautop' );
|
|
|
|
add_filter( 'the_excerpt', 'shortcode_unautop');
|
|
|
|
add_filter( 'get_the_excerpt', 'wp_trim_excerpt' );
|
2005-02-15 01:21:21 +01:00
|
|
|
|
2015-05-28 07:52:25 +02:00
|
|
|
add_filter( 'comment_text', 'wptexturize' );
|
2009-10-15 19:27:45 +02:00
|
|
|
add_filter( 'comment_text', 'convert_chars' );
|
|
|
|
add_filter( 'comment_text', 'make_clickable', 9 );
|
|
|
|
add_filter( 'comment_text', 'force_balance_tags', 25 );
|
|
|
|
add_filter( 'comment_text', 'convert_smilies', 20 );
|
|
|
|
add_filter( 'comment_text', 'wpautop', 30 );
|
2007-08-21 00:50:04 +02:00
|
|
|
|
2009-10-15 19:27:45 +02:00
|
|
|
add_filter( 'comment_excerpt', 'convert_chars' );
|
2007-08-21 00:50:04 +02:00
|
|
|
|
2009-10-15 19:27:45 +02:00
|
|
|
add_filter( 'list_cats', 'wptexturize' );
|
2005-02-07 08:46:41 +01:00
|
|
|
|
2009-10-15 19:27:45 +02:00
|
|
|
add_filter( 'wp_sprintf', 'wp_sprintf_l', 10, 2 );
|
2008-02-22 06:53:47 +01:00
|
|
|
|
2005-04-05 19:25:57 +02:00
|
|
|
// RSS filters
|
2015-03-16 11:46:26 +01:00
|
|
|
add_filter( 'the_title_rss', 'strip_tags' );
|
|
|
|
add_filter( 'the_title_rss', 'ent2ncr', 8 );
|
|
|
|
add_filter( 'the_title_rss', 'esc_html' );
|
|
|
|
add_filter( 'the_content_rss', 'ent2ncr', 8 );
|
2015-04-20 06:15:26 +02:00
|
|
|
add_filter( 'the_content_feed', 'wp_staticize_emoji' );
|
2015-03-16 11:46:26 +01:00
|
|
|
add_filter( 'the_excerpt_rss', 'convert_chars' );
|
|
|
|
add_filter( 'the_excerpt_rss', 'ent2ncr', 8 );
|
|
|
|
add_filter( 'comment_author_rss', 'ent2ncr', 8 );
|
|
|
|
add_filter( 'comment_text_rss', 'ent2ncr', 8 );
|
|
|
|
add_filter( 'comment_text_rss', 'esc_html' );
|
2015-04-20 06:15:26 +02:00
|
|
|
add_filter( 'comment_text_rss', 'wp_staticize_emoji' );
|
2015-03-16 11:46:26 +01:00
|
|
|
add_filter( 'bloginfo_rss', 'ent2ncr', 8 );
|
|
|
|
add_filter( 'the_author', 'ent2ncr', 8 );
|
|
|
|
add_filter( 'the_guid', 'esc_url' );
|
2005-04-05 19:25:57 +02:00
|
|
|
|
2015-03-11 23:49:28 +01:00
|
|
|
// Email filters
|
2015-04-20 06:15:26 +02:00
|
|
|
add_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
|
2015-03-11 23:49:28 +01:00
|
|
|
|
2006-02-18 08:40:43 +01:00
|
|
|
// Misc filters
|
2011-08-24 12:59:06 +02:00
|
|
|
add_filter( 'option_ping_sites', 'privacy_ping_filter' );
|
|
|
|
add_filter( 'option_blog_charset', '_wp_specialchars' ); // IMPORTANT: This must not be wp_specialchars() or esc_html() or it'll cause an infinite loop
|
2013-06-25 21:03:17 +02:00
|
|
|
add_filter( 'option_blog_charset', '_canonical_charset' );
|
2011-08-24 12:59:06 +02:00
|
|
|
add_filter( 'option_home', '_config_wp_home' );
|
|
|
|
add_filter( 'option_siteurl', '_config_wp_siteurl' );
|
|
|
|
add_filter( 'tiny_mce_before_init', '_mce_set_direction' );
|
2015-02-27 21:21:24 +01:00
|
|
|
add_filter( 'teeny_mce_before_init', '_mce_set_direction' );
|
2011-08-24 12:59:06 +02:00
|
|
|
add_filter( 'pre_kses', 'wp_pre_kses_less_than' );
|
2011-09-18 21:53:59 +02:00
|
|
|
add_filter( 'sanitize_title', 'sanitize_title_with_dashes', 10, 3 );
|
2011-08-24 12:59:06 +02:00
|
|
|
add_action( 'check_comment_flood', 'check_comment_flood_db', 10, 3 );
|
|
|
|
add_filter( 'comment_flood_filter', 'wp_throttle_comment_flood', 10, 3 );
|
|
|
|
add_filter( 'pre_comment_content', 'wp_rel_nofollow', 15 );
|
|
|
|
add_filter( 'comment_email', 'antispambot' );
|
|
|
|
add_filter( 'option_tag_base', '_wp_filter_taxonomy_base' );
|
|
|
|
add_filter( 'option_category_base', '_wp_filter_taxonomy_base' );
|
2011-09-30 17:35:50 +02:00
|
|
|
add_filter( 'the_posts', '_close_comments_for_old_posts', 10, 2);
|
2011-08-24 12:59:06 +02:00
|
|
|
add_filter( 'comments_open', '_close_comments_for_old_post', 10, 2 );
|
|
|
|
add_filter( 'pings_open', '_close_comments_for_old_post', 10, 2 );
|
|
|
|
add_filter( 'editable_slug', 'urldecode' );
|
2012-06-10 19:58:57 +02:00
|
|
|
add_filter( 'editable_slug', 'esc_textarea' );
|
2011-08-24 12:59:06 +02:00
|
|
|
add_filter( 'nav_menu_meta_box_object', '_wp_nav_menu_meta_box_object' );
|
2013-01-22 23:30:08 +01:00
|
|
|
add_filter( 'pingback_ping_source_uri', 'pingback_ping_source_uri' );
|
|
|
|
add_filter( 'xmlrpc_pingback_error', 'xmlrpc_pingback_error' );
|
2014-10-01 20:58:16 +02:00
|
|
|
add_filter( 'title_save_pre', 'trim' );
|
2006-11-30 09:48:56 +01:00
|
|
|
|
2013-07-31 08:44:57 +02:00
|
|
|
add_filter( 'http_request_host_is_external', 'allowed_http_request_hosts', 10, 2 );
|
|
|
|
|
2005-04-05 19:25:57 +02:00
|
|
|
// Actions
|
2014-10-28 22:12:22 +01:00
|
|
|
add_action( 'wp_head', '_wp_render_title_tag', 1 );
|
2011-08-24 12:59:06 +02:00
|
|
|
add_action( 'wp_head', 'wp_enqueue_scripts', 1 );
|
|
|
|
add_action( 'wp_head', 'feed_links', 2 );
|
|
|
|
add_action( 'wp_head', 'feed_links_extra', 3 );
|
|
|
|
add_action( 'wp_head', 'rsd_link' );
|
|
|
|
add_action( 'wp_head', 'wlwmanifest_link' );
|
2010-04-06 17:06:42 +02:00
|
|
|
add_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
|
2011-08-24 12:59:06 +02:00
|
|
|
add_action( 'wp_head', 'locale_stylesheet' );
|
|
|
|
add_action( 'publish_future_post', 'check_and_publish_future_post', 10, 1 );
|
|
|
|
add_action( 'wp_head', 'noindex', 1 );
|
2015-03-25 00:33:32 +01:00
|
|
|
add_action( 'wp_head', 'print_emoji_detection_script', 7 );
|
2011-08-24 12:59:06 +02:00
|
|
|
add_action( 'wp_head', 'wp_print_styles', 8 );
|
|
|
|
add_action( 'wp_head', 'wp_print_head_scripts', 9 );
|
|
|
|
add_action( 'wp_head', 'wp_generator' );
|
|
|
|
add_action( 'wp_head', 'rel_canonical' );
|
|
|
|
add_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );
|
Introducing Site Icon, favicon management for WordPress.
This v1 marries Jetpack's Site Icon module with the Media Modal, reusing code
from the Custom Header admin. For now, the core-provided icons will be limited
to a favicon, an iOS app icon, and a Windows tile icon, leaving `.ico` support
and additional icons to plugins to add.
Props obenland, tyxla, flixos90, jancbeck, markjaquith, scruffian.
See #16434.
Built from https://develop.svn.wordpress.org/trunk@32994
git-svn-id: http://core.svn.wordpress.org/trunk@32965 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-06-29 14:58:25 +02:00
|
|
|
add_action( 'wp_head', 'wp_site_icon', 99 );
|
|
|
|
add_action( 'wp_footer', 'wp_print_footer_scripts', 20 );
|
2011-08-24 12:59:06 +02:00
|
|
|
add_action( 'template_redirect', 'wp_shortlink_header', 11, 0 );
|
2011-08-26 22:31:30 +02:00
|
|
|
add_action( 'wp_print_footer_scripts', '_wp_footer_scripts' );
|
2011-09-03 00:13:55 +02:00
|
|
|
add_action( 'init', 'check_theme_switched', 99 );
|
2011-09-08 22:59:41 +02:00
|
|
|
add_action( 'after_switch_theme', '_wp_sidebars_changed' );
|
2015-03-11 23:49:28 +01:00
|
|
|
add_action( 'wp_print_styles', 'print_emoji_styles' );
|
2009-10-15 19:27:45 +02:00
|
|
|
|
2015-07-02 02:47:24 +02:00
|
|
|
if ( isset( $_GET['replytocom'] ) )
|
|
|
|
add_action( 'wp_head', 'wp_no_robots' );
|
|
|
|
|
2010-10-27 08:57:10 +02:00
|
|
|
// Login actions
|
|
|
|
add_action( 'login_head', 'wp_print_head_scripts', 9 );
|
2015-09-14 20:02:24 +02:00
|
|
|
add_action( 'login_head', 'wp_site_icon', 99 );
|
2011-08-26 22:31:30 +02:00
|
|
|
add_action( 'login_footer', 'wp_print_footer_scripts', 20 );
|
2011-05-13 20:33:20 +02:00
|
|
|
add_action( 'login_init', 'send_frame_options_header', 10, 0 );
|
2010-10-27 08:57:10 +02:00
|
|
|
|
2010-02-13 17:45:16 +01:00
|
|
|
// Feed Generator Tags
|
|
|
|
foreach ( array( 'rss2_head', 'commentsrss2_head', 'rss_head', 'rdf_header', 'atom_head', 'comments_atom_head', 'opml_head', 'app_head' ) as $action ) {
|
|
|
|
add_action( $action, 'the_generator' );
|
|
|
|
}
|
|
|
|
|
Introducing Site Icon, favicon management for WordPress.
This v1 marries Jetpack's Site Icon module with the Media Modal, reusing code
from the Custom Header admin. For now, the core-provided icons will be limited
to a favicon, an iOS app icon, and a Windows tile icon, leaving `.ico` support
and additional icons to plugins to add.
Props obenland, tyxla, flixos90, jancbeck, markjaquith, scruffian.
See #16434.
Built from https://develop.svn.wordpress.org/trunk@32994
git-svn-id: http://core.svn.wordpress.org/trunk@32965 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-06-29 14:58:25 +02:00
|
|
|
// Feed Site Icon
|
|
|
|
add_action( 'atom_head', 'atom_site_icon' );
|
|
|
|
add_action( 'rss2_head', 'rss2_site_icon' );
|
|
|
|
|
|
|
|
|
2009-10-15 19:27:45 +02:00
|
|
|
// WP Cron
|
|
|
|
if ( !defined( 'DOING_CRON' ) )
|
2012-04-30 23:02:54 +02:00
|
|
|
add_action( 'init', 'wp_cron' );
|
2009-10-15 19:27:45 +02:00
|
|
|
|
|
|
|
// 2 Actions 2 Furious
|
2011-08-24 12:59:06 +02:00
|
|
|
add_action( 'do_feed_rdf', 'do_feed_rdf', 10, 1 );
|
|
|
|
add_action( 'do_feed_rss', 'do_feed_rss', 10, 1 );
|
|
|
|
add_action( 'do_feed_rss2', 'do_feed_rss2', 10, 1 );
|
|
|
|
add_action( 'do_feed_atom', 'do_feed_atom', 10, 1 );
|
|
|
|
add_action( 'do_pings', 'do_all_pings', 10, 1 );
|
|
|
|
add_action( 'do_robots', 'do_robots' );
|
2011-12-21 11:57:42 +01:00
|
|
|
add_action( 'set_comment_cookies', 'wp_set_comment_cookies', 10, 2 );
|
2011-08-24 12:59:06 +02:00
|
|
|
add_action( 'sanitize_comment_cookies', 'sanitize_comment_cookies' );
|
2015-03-25 02:43:28 +01:00
|
|
|
add_action( 'admin_print_scripts', 'print_emoji_detection_script' );
|
2011-08-24 12:59:06 +02:00
|
|
|
add_action( 'admin_print_scripts', 'print_head_scripts', 20 );
|
2011-08-26 22:31:30 +02:00
|
|
|
add_action( 'admin_print_footer_scripts', '_wp_footer_scripts' );
|
2015-03-25 02:43:28 +01:00
|
|
|
add_action( 'admin_print_styles', 'print_emoji_styles' );
|
2011-08-24 12:59:06 +02:00
|
|
|
add_action( 'admin_print_styles', 'print_admin_styles', 20 );
|
|
|
|
add_action( 'init', 'smilies_init', 5 );
|
|
|
|
add_action( 'plugins_loaded', 'wp_maybe_load_widgets', 0 );
|
|
|
|
add_action( 'plugins_loaded', 'wp_maybe_load_embeds', 0 );
|
|
|
|
add_action( 'shutdown', 'wp_ob_end_flush_all', 1 );
|
2014-11-01 21:20:23 +01:00
|
|
|
// Create a revision whenever a post is updated.
|
2013-07-11 00:40:42 +02:00
|
|
|
add_action( 'post_updated', 'wp_save_post_revision', 10, 1 );
|
2011-08-24 12:59:06 +02:00
|
|
|
add_action( 'publish_post', '_publish_post_hook', 5, 1 );
|
|
|
|
add_action( 'transition_post_status', '_transition_post_status', 5, 3 );
|
2011-10-10 22:52:44 +02:00
|
|
|
add_action( 'transition_post_status', '_update_term_count_on_transition_post_status', 10, 3 );
|
2011-08-24 12:59:06 +02:00
|
|
|
add_action( 'comment_form', 'wp_comment_form_unfiltered_html_nonce' );
|
|
|
|
add_action( 'wp_scheduled_delete', 'wp_scheduled_delete' );
|
2012-04-12 20:49:48 +02:00
|
|
|
add_action( 'wp_scheduled_auto_draft_delete', 'wp_delete_auto_drafts' );
|
2011-08-24 12:59:06 +02:00
|
|
|
add_action( 'admin_init', 'send_frame_options_header', 10, 0 );
|
|
|
|
add_action( 'importer_scheduled_cleanup', 'wp_delete_attachment' );
|
2011-08-28 10:42:07 +02:00
|
|
|
add_action( 'upgrader_scheduled_cleanup', 'wp_delete_attachment' );
|
2012-09-26 21:44:43 +02:00
|
|
|
add_action( 'welcome_panel', 'wp_welcome_panel' );
|
2010-05-31 18:11:20 +02:00
|
|
|
|
|
|
|
// Navigation menu actions
|
2011-08-24 12:59:06 +02:00
|
|
|
add_action( 'delete_post', '_wp_delete_post_menu_item' );
|
2013-08-29 18:45:10 +02:00
|
|
|
add_action( 'delete_term', '_wp_delete_tax_menu_item', 10, 3 );
|
2011-08-24 12:59:06 +02:00
|
|
|
add_action( 'transition_post_status', '_wp_auto_add_pages_to_menu', 10, 3 );
|
2009-10-15 19:27:45 +02:00
|
|
|
|
2009-12-10 07:14:36 +01:00
|
|
|
// Post Thumbnail CSS class filtering
|
|
|
|
add_action( 'begin_fetch_post_thumbnail_html', '_wp_post_thumbnail_class_filter_add' );
|
|
|
|
add_action( 'end_fetch_post_thumbnail_html', '_wp_post_thumbnail_class_filter_remove' );
|
2007-05-01 03:13:06 +02:00
|
|
|
|
2009-10-15 19:27:45 +02:00
|
|
|
// Redirect Old Slugs
|
2015-09-29 06:58:25 +02:00
|
|
|
add_action( 'template_redirect', 'wp_old_slug_redirect' );
|
|
|
|
add_action( 'post_updated', 'wp_check_for_changed_slugs', 12, 3 );
|
|
|
|
add_action( 'attachment_updated', 'wp_check_for_changed_slugs', 12, 3 );
|
2010-05-23 09:49:21 +02:00
|
|
|
|
|
|
|
// Nonce check for Post Previews
|
|
|
|
add_action( 'init', '_show_post_preview' );
|
2009-03-10 01:50:00 +01:00
|
|
|
|
2015-06-17 01:13:26 +02:00
|
|
|
// Output JS to reset window.name for previews
|
|
|
|
add_action( 'wp_head', 'wp_post_preview_js', 1 );
|
|
|
|
|
2009-10-15 19:27:45 +02:00
|
|
|
// Timezone
|
|
|
|
add_filter( 'pre_option_gmt_offset','wp_timezone_override_offset' );
|
2010-02-06 06:15:26 +01:00
|
|
|
|
2010-02-28 07:34:31 +01:00
|
|
|
// Admin Color Schemes
|
|
|
|
add_action( 'admin_init', 'register_admin_color_schemes', 1);
|
|
|
|
add_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
|
2010-05-27 18:11:27 +02:00
|
|
|
|
2012-08-17 01:09:40 +02:00
|
|
|
// If the upgrade hasn't run yet, assume link manager is used.
|
|
|
|
add_filter( 'default_option_link_manager_enabled', '__return_true' );
|
|
|
|
|
2012-09-27 21:19:18 +02:00
|
|
|
// This option no longer exists; tell plugins we always support auto-embedding.
|
|
|
|
add_filter( 'default_option_embed_autourls', '__return_true' );
|
2012-09-25 09:10:09 +02:00
|
|
|
|
Force comment pagination on single posts.
Previously, the 'page_comments' toggle allowed users to disable comment
pagination. This toggle was only superficial, however. Even with
'page_comments' turned on, `comments_template()` loaded all of a post's
comments into memory, and passed them to `wp_list_comments()` and
`Walker_Comment`, the latter of which produced markup for only the
current page of comments. In other words, it was possible to enable
'page_comments', thereby showing only a subset of a post's comments on a given
page, but all comments continued to be loaded in the background. This technique
scaled poorly. Posts with hundreds or thousands of comments would load slowly,
or not at all, even when the 'comments_per_page' setting was set to a
reasonable number.
Recent changesets have addressed this problem through more efficient tree-
walking, better descendant caching, and more selective queries for top-level
post comments. The current changeset completes the project by addressing the
root issue: that loading a post causes all of its comments to be loaded too.
Here's the breakdown:
* Comment pagination is now forced. Setting 'page_comments' to false leads to evil things when you have many comments. If you want to avoid pagination, set 'comments_per_page' to something high.
* The 'page_comments' setting has been expunged from options-discussion.php, and from places in the codebase where it was referenced. For plugins relying on 'page_comments', we now force the value to `true` with a `pre_option` filter.
* `comments_template()` now queries for an appropriately small number of comments. Usually, this means the `comments_per_page` value.
* To preserve the current (odd) behavior for comment pagination links, some unholy hacks have been inserted into `comments_template()`. The ugliness is insulated in this function for backward compatibility and to minimize collateral damage. A side-effect is that, for certain settings of 'default_comments_page', up to 2x the value of `comments_per_page` might be fetched at a time.
* In support of these changes, a `$format` parameter has been added to `WP_Comment::get_children()`. This param allows you to request a flattened array of comment children, suitable for feeding into `Walker_Comment`.
* `WP_Query` loops are now informed about total available comment counts and comment pages by the `WP_Comment_Query` (`found_comments`, `max_num_pages`), instead of by `Walker_Comment`.
Aside from radical performance improvements in the case of a post with many
comments, this changeset fixes a bug that caused the first page of comments to
be partial (`found_comments` % `comments_per_page`), rather than the last, as
you'd expect.
Props boonebgorges, wonderboymusic.
Fixes #8071.
Built from https://develop.svn.wordpress.org/trunk@34561
git-svn-id: http://core.svn.wordpress.org/trunk@34525 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-25 22:40:25 +02:00
|
|
|
// This option no longer exists; tell plugins we want comment pagination.
|
|
|
|
add_filter( 'pre_option_page_comments', '__return_true' );
|
|
|
|
|
2013-01-29 07:15:25 +01:00
|
|
|
// Default settings for heartbeat
|
|
|
|
add_filter( 'heartbeat_settings', 'wp_heartbeat_settings' );
|
|
|
|
|
2013-02-28 09:57:17 +01:00
|
|
|
// Check if the user is logged out
|
2014-02-09 23:34:11 +01:00
|
|
|
add_action( 'admin_enqueue_scripts', 'wp_auth_check_load' );
|
|
|
|
add_filter( 'heartbeat_send', 'wp_auth_check' );
|
|
|
|
add_filter( 'heartbeat_nopriv_send', 'wp_auth_check' );
|
2013-02-28 09:57:17 +01:00
|
|
|
|
2013-07-29 05:23:51 +02:00
|
|
|
// Default authentication filters
|
|
|
|
add_filter( 'authenticate', 'wp_authenticate_username_password', 20, 3 );
|
|
|
|
add_filter( 'authenticate', 'wp_authenticate_spam_check', 99 );
|
2014-03-09 16:23:15 +01:00
|
|
|
add_filter( 'determine_current_user', 'wp_validate_auth_cookie' );
|
|
|
|
add_filter( 'determine_current_user', 'wp_validate_logged_in_cookie', 20 );
|
2013-07-29 05:23:51 +02:00
|
|
|
|
2015-02-11 20:42:25 +01:00
|
|
|
// Split term updates.
|
2015-08-14 05:59:26 +02:00
|
|
|
add_action( 'admin_init', '_wp_check_for_scheduled_split_terms' );
|
2015-02-11 20:42:25 +01:00
|
|
|
add_action( 'split_shared_term', '_wp_check_split_default_terms', 10, 4 );
|
|
|
|
add_action( 'split_shared_term', '_wp_check_split_terms_in_menus', 10, 4 );
|
2015-08-12 16:07:26 +02:00
|
|
|
add_action( 'split_shared_term', '_wp_check_split_nav_menu_terms', 10, 4 );
|
2015-08-14 05:59:26 +02:00
|
|
|
add_action( 'wp_split_shared_term_batch', '_wp_batch_split_terms' );
|
2015-02-11 20:42:25 +01:00
|
|
|
|
2015-09-14 04:17:26 +02:00
|
|
|
// Email notifications.
|
2015-09-17 00:26:24 +02:00
|
|
|
add_action( 'comment_post', 'wp_new_comment_notify_moderator' );
|
2015-09-14 04:17:26 +02:00
|
|
|
add_action( 'comment_post', 'wp_new_comment_notify_postauthor' );
|
2015-09-14 04:45:25 +02:00
|
|
|
add_action( 'after_password_reset', 'wp_password_change_notification' );
|
2015-09-17 00:19:24 +02:00
|
|
|
add_action( 'register_new_user', 'wp_send_new_user_notifications' );
|
|
|
|
add_action( 'edit_user_created_user', 'wp_send_new_user_notifications' );
|
2015-09-14 04:17:26 +02:00
|
|
|
|
2015-01-12 17:40:23 +01:00
|
|
|
/**
|
|
|
|
* Filters formerly mixed into wp-includes
|
|
|
|
*/
|
|
|
|
// Theme
|
|
|
|
add_action( 'wp_loaded', '_custom_header_background_just_in_time' );
|
|
|
|
add_action( 'plugins_loaded', '_wp_customize_include' );
|
|
|
|
add_action( 'admin_enqueue_scripts', '_wp_customize_loader_settings' );
|
|
|
|
add_action( 'delete_attachment', '_delete_attachment_theme_mod' );
|
|
|
|
|
|
|
|
// Calendar widget cache
|
|
|
|
add_action( 'save_post', 'delete_get_calendar_cache' );
|
|
|
|
add_action( 'delete_post', 'delete_get_calendar_cache' );
|
|
|
|
add_action( 'update_option_start_of_week', 'delete_get_calendar_cache' );
|
|
|
|
add_action( 'update_option_gmt_offset', 'delete_get_calendar_cache' );
|
|
|
|
|
|
|
|
// Author
|
|
|
|
add_action( 'transition_post_status', '__clear_multi_author_cache' );
|
|
|
|
|
|
|
|
// Post
|
|
|
|
add_action( 'init', 'create_initial_post_types', 0 ); // highest priority
|
|
|
|
add_action( 'admin_menu', '_add_post_type_submenus' );
|
|
|
|
add_action( 'before_delete_post', '_reset_front_page_settings_for_post' );
|
|
|
|
add_action( 'wp_trash_post', '_reset_front_page_settings_for_post' );
|
|
|
|
|
|
|
|
// Post Formats
|
|
|
|
add_filter( 'request', '_post_format_request' );
|
|
|
|
add_filter( 'term_link', '_post_format_link', 10, 3 );
|
|
|
|
add_filter( 'get_post_format', '_post_format_get_term' );
|
|
|
|
add_filter( 'get_terms', '_post_format_get_terms', 10, 3 );
|
|
|
|
add_filter( 'wp_get_object_terms', '_post_format_wp_get_object_terms' );
|
|
|
|
|
|
|
|
// KSES
|
|
|
|
add_action( 'init', 'kses_init' );
|
|
|
|
add_action( 'set_current_user', 'kses_init' );
|
|
|
|
|
|
|
|
// Script Loader
|
|
|
|
add_action( 'wp_default_scripts', 'wp_default_scripts' );
|
|
|
|
add_filter( 'wp_print_scripts', 'wp_just_in_time_script_localization' );
|
|
|
|
add_filter( 'print_scripts_array', 'wp_prototype_before_jquery' );
|
|
|
|
|
|
|
|
add_action( 'wp_default_styles', 'wp_default_styles' );
|
|
|
|
add_filter( 'style_loader_src', 'wp_style_loader_src', 10, 2 );
|
|
|
|
|
|
|
|
// Taxonomy
|
|
|
|
add_action( 'init', 'create_initial_taxonomies', 0 ); // highest priority
|
|
|
|
|
|
|
|
// Canonical
|
|
|
|
add_action( 'template_redirect', 'redirect_canonical' );
|
|
|
|
add_action( 'template_redirect', 'wp_redirect_admin_locations', 1000 );
|
|
|
|
|
|
|
|
// Shortcodes
|
|
|
|
add_filter( 'the_content', 'do_shortcode', 11 ); // AFTER wpautop()
|
|
|
|
|
|
|
|
// Media
|
|
|
|
add_action( 'wp_playlist_scripts', 'wp_playlist_scripts' );
|
|
|
|
add_action( 'customize_controls_enqueue_scripts', 'wp_plupload_default_settings' );
|
|
|
|
|
|
|
|
// Nav menu
|
|
|
|
add_filter( 'nav_menu_item_id', '_nav_menu_item_id_use_once', 10, 2 );
|
|
|
|
|
2015-05-25 08:25:25 +02:00
|
|
|
// Widgets
|
|
|
|
add_action( 'init', 'wp_widgets_init', 1 );
|
|
|
|
|
2015-01-12 17:40:23 +01:00
|
|
|
// Admin Bar
|
|
|
|
// Don't remove. Wrong way to disable.
|
|
|
|
add_action( 'template_redirect', '_wp_admin_bar_init', 0 );
|
|
|
|
add_action( 'admin_init', '_wp_admin_bar_init' );
|
|
|
|
add_action( 'wp_footer', 'wp_admin_bar_render', 1000 );
|
|
|
|
add_action( 'in_admin_header', 'wp_admin_bar_render', 0 );
|
|
|
|
|
2015-08-06 22:40:26 +02:00
|
|
|
// Former admin filters that can also be hooked on the front end
|
|
|
|
add_action( 'media_buttons', 'media_buttons' );
|
|
|
|
add_filter( 'image_send_to_editor', 'image_add_caption', 20, 8 );
|
|
|
|
add_filter( 'media_send_to_editor', 'image_media_send_to_editor', 10, 3 );
|
|
|
|
|
2015-01-12 17:40:23 +01:00
|
|
|
unset( $filter, $action );
|