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' );
|
Customize: Implement customized state persistence with changesets.
Includes infrastructure developed in the Customize Snapshots feature plugin.
See https://make.wordpress.org/core/2016/10/12/customize-changesets-technical-design-decisions/
Props westonruter, valendesigns, utkarshpatel, stubgo, lgedeon, ocean90, ryankienstra, mihai2u, dlh, aaroncampbell, jonathanbardo, jorbin.
See #28721.
See #31089.
Fixes #30937.
Fixes #31517.
Fixes #30028.
Fixes #23225.
Fixes #34142.
Fixes #36485.
Built from https://develop.svn.wordpress.org/trunk@38810
git-svn-id: http://core.svn.wordpress.org/trunk@38753 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-10-18 22:05:31 +02:00
|
|
|
add_filter( 'wp_insert_post_data', '_wp_customize_changeset_filter_insert_post_data', 10, 2 );
|
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' );
|
|
|
|
|
2016-06-30 03:02:29 +02:00
|
|
|
// Meta
|
|
|
|
add_filter( 'register_meta_args', '_wp_register_meta_args_whitelist', 10, 2 );
|
|
|
|
|
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
|
|
|
|
Merge the Responsive Images feature plugin into core, initial commit. See: https://github.com/ResponsiveImagesCG/wp-tevko-responsive-images/
New functions in `media.php`:
* `wp_get_attachment_image_srcset_array()` - Returns an array of image candidate string data used to build a `srcset` value for an attachment given an `$attachement_id` and `$size`.
* `wp_get_attachment_image_srcset()` - Returns the `srcset` value for an attachment given an `$attachement_id` and `$size`.
* `wp_get_attachment_image_sizes()` - Returns the `sizes` value for an attachment given an `$attachement_id` and `$size` and optional arguments used to alter its output.
* `wp_make_content_images_responsive()` - A display filter for adding `srcset` and `sizes` to images embedded in content.
* `wp_img_add_srcset_and_sizes()` - A utility function used by `wp_make_content_images_responsive()` to add `srcset` and `sizes` to a single `<img>` element.
Modifies existing core functions:
* Modify `wp_get_attachment_image()` so the HTML returned for an image includes `srcset` and `sizes`.
* Modify `get_media_embedded_in_content()` (sup, 3.6 leftover) by adding `<img>` to the list of accepted tags that can be matched in content. This is used in `wp_make_content_images_responsive()` to find all of the images embedded in content before passing them off to `wp_img_add_srcset_and_sizes()`.
Tests:
* Add a new factory method to `WP_UnitTest_Factory_For_Attachment` named `create_upload_object()`
* Adds unit tests
* Updates unit tests
Props joemcgill, tevko, jaspermdegroot, mdmcginn, barryceelen, peterwilsoncc, fsylum, wonderboymusic, chriscoyier, benjaminpick, jrfnl, #12kingkool68, janhenckens, ryanmarkel, side777, ryelle, wturrell, micahmills, mattbagwell, coliff, DrewAPicture.
See #33641.
Built from https://develop.svn.wordpress.org/trunk@34855
git-svn-id: http://core.svn.wordpress.org/trunk@34820 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-10-06 06:59:24 +02:00
|
|
|
add_filter( 'the_content', 'wptexturize' );
|
2016-04-22 09:08:27 +02:00
|
|
|
add_filter( 'the_content', 'convert_smilies', 20 );
|
Merge the Responsive Images feature plugin into core, initial commit. See: https://github.com/ResponsiveImagesCG/wp-tevko-responsive-images/
New functions in `media.php`:
* `wp_get_attachment_image_srcset_array()` - Returns an array of image candidate string data used to build a `srcset` value for an attachment given an `$attachement_id` and `$size`.
* `wp_get_attachment_image_srcset()` - Returns the `srcset` value for an attachment given an `$attachement_id` and `$size`.
* `wp_get_attachment_image_sizes()` - Returns the `sizes` value for an attachment given an `$attachement_id` and `$size` and optional arguments used to alter its output.
* `wp_make_content_images_responsive()` - A display filter for adding `srcset` and `sizes` to images embedded in content.
* `wp_img_add_srcset_and_sizes()` - A utility function used by `wp_make_content_images_responsive()` to add `srcset` and `sizes` to a single `<img>` element.
Modifies existing core functions:
* Modify `wp_get_attachment_image()` so the HTML returned for an image includes `srcset` and `sizes`.
* Modify `get_media_embedded_in_content()` (sup, 3.6 leftover) by adding `<img>` to the list of accepted tags that can be matched in content. This is used in `wp_make_content_images_responsive()` to find all of the images embedded in content before passing them off to `wp_img_add_srcset_and_sizes()`.
Tests:
* Add a new factory method to `WP_UnitTest_Factory_For_Attachment` named `create_upload_object()`
* Adds unit tests
* Updates unit tests
Props joemcgill, tevko, jaspermdegroot, mdmcginn, barryceelen, peterwilsoncc, fsylum, wonderboymusic, chriscoyier, benjaminpick, jrfnl, #12kingkool68, janhenckens, ryanmarkel, side777, ryelle, wturrell, micahmills, mattbagwell, coliff, DrewAPicture.
See #33641.
Built from https://develop.svn.wordpress.org/trunk@34855
git-svn-id: http://core.svn.wordpress.org/trunk@34820 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-10-06 06:59:24 +02:00
|
|
|
add_filter( 'the_content', 'wpautop' );
|
|
|
|
add_filter( 'the_content', 'shortcode_unautop' );
|
|
|
|
add_filter( 'the_content', 'prepend_attachment' );
|
|
|
|
add_filter( 'the_content', 'wp_make_content_images_responsive' );
|
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' );
|
2016-06-29 19:28:28 +02:00
|
|
|
|
|
|
|
add_filter( 'the_post_thumbnail_caption', 'wptexturize' );
|
|
|
|
add_filter( 'the_post_thumbnail_caption', 'convert_smilies' );
|
|
|
|
add_filter( 'the_post_thumbnail_caption', 'convert_chars' );
|
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
|
|
|
|
2015-10-13 03:40:26 +02:00
|
|
|
add_filter( 'widget_text', 'balanceTags' );
|
|
|
|
|
2015-11-04 22:28:26 +01:00
|
|
|
add_filter( 'date_i18n', 'wp_maybe_decline_date' );
|
|
|
|
|
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-10-30 00:11:24 +01:00
|
|
|
add_filter( 'the_content_feed', '_oembed_filter_feed_content' );
|
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
|
|
|
|
Customize: Introduce starter content and site freshness state.
A theme can opt-in for tailored starter content to apply to the customizer when previewing the theme on a fresh install, when `fresh_site` is at its initial `1` value. Starter content is staged in the customizer and does not go live unless the changes are published. Initial starter content is added to Twenty Seventeen.
* The `fresh_site` flag is cleared when a published post or page is saved, when widgets are modified, or when the customizer state is saved.
* Starter content is registered via `starter-content` theme support, where the argument is an array containing `widgets`, `posts`, `nav_menus`, `options`, and `theme_mods`. Posts/pages in starter content are created with the `auto-draft` status, re-using the page/post stubs feature added to nav menus and the static front page controls.
* A `get_theme_starter_content` filter allows for plugins to extend a theme's starter content.
* Starter content in themes can/should re-use existing starter content items in core by using named placeholders.
* Import theme starter content into customized state when fresh site.
* Prevent original_title differences from causing refreshes if title is present.
* Ensure nav menu item url is set according to object when previewing.
* Make sure initial saved state is false if there are dirty settings without an existing changeset.
* Ensure dirty settings are cleaned upon changeset publishing.
Props helen, westonruter, ocean90.
Fixes #38114, #38533.
Built from https://develop.svn.wordpress.org/trunk@38991
git-svn-id: http://core.svn.wordpress.org/trunk@38934 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-10-28 04:57:35 +02:00
|
|
|
// Mark site as no longer fresh
|
2016-10-28 05:43:30 +02:00
|
|
|
foreach ( array( 'publish_post', 'publish_page', 'wp_ajax_save-widget', 'wp_ajax_widgets-order', 'customize_save_after' ) as $action ) {
|
|
|
|
add_action( $action, '_delete_option_fresh_site' );
|
Customize: Introduce starter content and site freshness state.
A theme can opt-in for tailored starter content to apply to the customizer when previewing the theme on a fresh install, when `fresh_site` is at its initial `1` value. Starter content is staged in the customizer and does not go live unless the changes are published. Initial starter content is added to Twenty Seventeen.
* The `fresh_site` flag is cleared when a published post or page is saved, when widgets are modified, or when the customizer state is saved.
* Starter content is registered via `starter-content` theme support, where the argument is an array containing `widgets`, `posts`, `nav_menus`, `options`, and `theme_mods`. Posts/pages in starter content are created with the `auto-draft` status, re-using the page/post stubs feature added to nav menus and the static front page controls.
* A `get_theme_starter_content` filter allows for plugins to extend a theme's starter content.
* Starter content in themes can/should re-use existing starter content items in core by using named placeholders.
* Import theme starter content into customized state when fresh site.
* Prevent original_title differences from causing refreshes if title is present.
* Ensure nav menu item url is set according to object when previewing.
* Make sure initial saved state is false if there are dirty settings without an existing changeset.
* Ensure dirty settings are cleaned upon changeset publishing.
Props helen, westonruter, ocean90.
Fixes #38114, #38533.
Built from https://develop.svn.wordpress.org/trunk@38991
git-svn-id: http://core.svn.wordpress.org/trunk@38934 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-10-28 04:57:35 +02: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 );
|
Comments: Abstract `die()` calls from comment submission routine.
Since 4.4, comment submission has been mostly abstracted into a function,
rather than being processed inline in wp-comments-post.php. This change
made it easier to write automated tests against the bulk of the comment
submission process. `wp_allow_comment()` remained untestable, however:
when a comment failed one of its checks (flooding, duplicates, etc),
`die()` or `wp_die()` would be called directly. This shortcoming posed
problems for any application attempting to use WP's comment verification
functions in an abstract way - from PHPUnit to the REST API.
The current changeset introduces a new parameter, `$avoid_die`, to the
`wp_new_comment()` stack. When set to `true`, `wp_new_comment()` and
`wp_allow_comment()` will return `WP_Error` objects when a comment check
fails. When set to `false` - the default, for backward compatibility -
a failed check will result in a `die()` or `wp_die()`, as appropriate.
Prior to this changeset, default comment flood checks took place in the
function `check_comment_flood_db()`, which was hooked to the
'check_comment_flood' action. This design allowed the default comment
flood routine to be bypassed or replaced using `remove_action()`.
In order to maintain backward compatibility with this usage, while
simultaneously converting the comment flood logic into something that
returns a value rather than calling `die()` directly,
`check_comment_flood_db()` has been changed into a wrapper function for
a call to `add_filter()`; this, in turn, adds the *actual* comment flood
check to a new filter, 'wp_is_comment_flood'. Note that direct calls
to `check_comment_flood_db()` will no longer do anything in isolation.
Props websupporter, rachelbaker.
Fixes #36901.
Built from https://develop.svn.wordpress.org/trunk@38778
git-svn-id: http://core.svn.wordpress.org/trunk@38721 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-10-11 05:43:28 +02:00
|
|
|
add_action( 'check_comment_flood', 'check_comment_flood_db', 10, 4 );
|
2011-08-24 12:59:06 +02:00
|
|
|
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
|
|
|
|
2016-10-25 22:48:29 +02:00
|
|
|
add_action( 'transition_comment_status', '_clear_modified_cache_on_transition_comment_status', 10, 2 );
|
|
|
|
|
2016-05-13 07:11:27 +02:00
|
|
|
add_filter( 'http_request_host_is_external', 'allowed_http_request_hosts', 10, 2 );
|
2013-07-31 08:44:57 +02:00
|
|
|
|
REST API: Introduce baby API to the world.
Baby API was born at 2.8KLOC on October 8th at 2:30 UTC. API has lots
of growing to do, so wish it the best of luck.
Thanks to everyone who helped along the way:
Props rmccue, rachelbaker, danielbachhuber, joehoyle, drewapicture,
adamsilverstein, netweb, tlovett1, shelob9, kadamwhite, pento,
westonruter, nikv, tobych, redsweater, alecuf, pollyplummer, hurtige,
bpetty, oso96_2000, ericlewis, wonderboymusic, joshkadis, mordauk,
jdgrimes, johnbillion, jeremyfelt, thiago-negri, jdolan, pkevan,
iseulde, thenbrent, maxcutler, kwight, markoheijnen, phh, natewr,
jjeaton, shprink, mattheu, quasel, jmusal, codebykat, hubdotcom,
tapsboy, QWp6t, pushred, jaredcobb, justinsainton, japh, matrixik,
jorbin, frozzare, codfish, michael-arestad, kellbot, ironpaperweight,
simonlampen, alisspers, eliorivero, davidbhayes, JohnDittmar, dimadin,
traversal, cmmarslender, Toddses, kokarn, welcher, and ericpedia.
Fixes #33982.
Built from https://develop.svn.wordpress.org/trunk@34928
git-svn-id: http://core.svn.wordpress.org/trunk@34893 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-10-08 04:31:25 +02:00
|
|
|
// REST API filters.
|
|
|
|
add_action( 'xmlrpc_rsd_apis', 'rest_output_rsd' );
|
|
|
|
add_action( 'wp_head', 'rest_output_link_wp_head', 10, 0 );
|
|
|
|
add_action( 'template_redirect', 'rest_output_link_header', 11, 0 );
|
|
|
|
add_action( 'auth_cookie_malformed', 'rest_cookie_collect_status' );
|
|
|
|
add_action( 'auth_cookie_expired', 'rest_cookie_collect_status' );
|
|
|
|
add_action( 'auth_cookie_bad_username', 'rest_cookie_collect_status' );
|
|
|
|
add_action( 'auth_cookie_bad_hash', 'rest_cookie_collect_status' );
|
|
|
|
add_action( 'auth_cookie_valid', 'rest_cookie_collect_status' );
|
|
|
|
add_filter( 'rest_authentication_errors', 'rest_cookie_check_errors', 100 );
|
|
|
|
|
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 );
|
2016-07-13 14:54:28 +02:00
|
|
|
add_action( 'wp_head', 'wp_resource_hints', 2 );
|
2011-08-24 12:59:06 +02:00
|
|
|
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 );
|
2016-12-16 08:29:42 +01:00
|
|
|
add_action( 'wp_head', 'wp_custom_css_cb', 101 );
|
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
|
2016-07-13 14:54:28 +02:00
|
|
|
add_filter( 'login_head', 'wp_resource_hints', 8 );
|
2010-10-27 08:57:10 +02:00
|
|
|
add_action( 'login_head', 'wp_print_head_scripts', 9 );
|
2016-01-18 10:57:29 +01:00
|
|
|
add_action( 'login_head', 'print_admin_styles', 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' );
|
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
|
|
|
|
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 );
|
2016-02-23 00:15:27 +01:00
|
|
|
add_filter( 'authenticate', 'wp_authenticate_email_password', 20, 3 );
|
2013-07-29 05:23:51 +02:00
|
|
|
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' );
|
2015-11-25 23:38:29 +01:00
|
|
|
add_action( 'edit_user_created_user', 'wp_send_new_user_notifications', 10, 2 );
|
2015-09-14 04:17:26 +02:00
|
|
|
|
REST API: Introduce baby API to the world.
Baby API was born at 2.8KLOC on October 8th at 2:30 UTC. API has lots
of growing to do, so wish it the best of luck.
Thanks to everyone who helped along the way:
Props rmccue, rachelbaker, danielbachhuber, joehoyle, drewapicture,
adamsilverstein, netweb, tlovett1, shelob9, kadamwhite, pento,
westonruter, nikv, tobych, redsweater, alecuf, pollyplummer, hurtige,
bpetty, oso96_2000, ericlewis, wonderboymusic, joshkadis, mordauk,
jdgrimes, johnbillion, jeremyfelt, thiago-negri, jdolan, pkevan,
iseulde, thenbrent, maxcutler, kwight, markoheijnen, phh, natewr,
jjeaton, shprink, mattheu, quasel, jmusal, codebykat, hubdotcom,
tapsboy, QWp6t, pushred, jaredcobb, justinsainton, japh, matrixik,
jorbin, frozzare, codfish, michael-arestad, kellbot, ironpaperweight,
simonlampen, alisspers, eliorivero, davidbhayes, JohnDittmar, dimadin,
traversal, cmmarslender, Toddses, kokarn, welcher, and ericpedia.
Fixes #33982.
Built from https://develop.svn.wordpress.org/trunk@34928
git-svn-id: http://core.svn.wordpress.org/trunk@34893 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-10-08 04:31:25 +02:00
|
|
|
// REST API actions.
|
|
|
|
add_action( 'init', 'rest_api_init' );
|
REST API: Introduce the Content API endpoints.
REST API endpoints for your WordPress content. These endpoints provide machine-readable external access to your WordPress site with a clear, standards-driven interface, allowing new and innovative apps for interacting with your site. These endpoints support all of the following:
- Posts: Read and write access to all post data, for all types of post-based data, including pages and media.
- Comments: Read and write access to all comment data. This includes pingbacks and trackbacks.
- Terms: Read and write access to all term data.
- Users: Read and write access to all user data. This includes public access to some data for post authors.
- Meta: Read and write access to metadata for posts, comments, terms, and users, on an opt-in basis from plugins.
- Settings: Read and write access to settings, on an opt-in basis from plugins and core. This enables API management of key site content values that are technically stored in options, such as site title and byline.
Love your REST API, WordPress! The infrastructure says, "Let's do lunch!" but the content API endpoints say, "You're paying!"
Props rmccue, rachelbaker, danielbachhuber, joehoyle, adamsilverstein, afurculita, ahmadawais, airesvsg, alisspers, antisilent, apokalyptik, artoliukkonen, attitude, boonebgorges, bradyvercher, brianhogg, caseypatrickdriscoll, chopinbach, chredd, christianesperar, chrisvanpatten, claudiolabarbera, claudiosmweb, cmmarslender, codebykat, coderkevin, codfish, codonnell822, daggerhart, danielpunkass, davidbhayes, delphinus, desrosj, dimadin, dotancohen, DrewAPicture, Dudo1985, duncanjbrown, eherman24, eivhyl, eliorivero, elyobo, en-alis, ericandrewlewis, ericpedia, evansobkowicz, fjarrett, frozzare, georgestephanis, greatislander, guavaworks, hideokamoto, hkdobrev, hubdotcom, hurtige, iandunn, ircrash, ironpaperweight, iseulde, Japh, jaredcobb, JDGrimes, jdolan, jdoubleu, jeremyfelt, jimt, jjeaton, jmusal, jnylen0, johanmynhardt, johnbillion, jonathanbardo, jorbin, joshkadis, JPry, jshreve, jtsternberg, JustinSainton, kacperszurek, kadamwhite, kalenjohnson, kellbot, kjbenk, kokarn, krogsgard, kuchenundkakao, kuldipem, kwight, lgedeon, lukepettway, mantismamita, markoheijnen, matrixik, mattheu, mauteri, maxcutler, mayukojpn, michael-arestad, miyauchi, mjbanks, modemlooper, mrbobbybryant, NateWr, nathanrice, netweb, NikV, nullvariable, oskosk, oso96_2000, oxymoron, pcfreak30, pento, peterwilsoncc, Pezzab, phh, pippinsplugins, pjgalbraith, pkevan, pollyplummer, pushred, quasel, QWp6t, schlessera, schrapel, Shelob9, shprink, simonlampen, Soean, solal, tapsboy, tfrommen, tharsheblows, thenbrent, tierra, tlovett1, tnegri, tobych, Toddses, toro_unit, traversal, vanillalounge, vishalkakadiya, wanecek, web2style, webbgaraget, websupporter, westonruter, whyisjake, wonderboymusic, wpsmith, xknown, zyphonic.
Fixes #38373.
Built from https://develop.svn.wordpress.org/trunk@38832
git-svn-id: http://core.svn.wordpress.org/trunk@38775 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-10-20 04:55:32 +02:00
|
|
|
add_action( 'rest_api_init', 'rest_api_default_filters', 10, 1 );
|
|
|
|
add_action( 'rest_api_init', 'register_initial_settings', 10 );
|
|
|
|
add_action( 'rest_api_init', 'create_initial_rest_routes', 99 );
|
REST API: Introduce baby API to the world.
Baby API was born at 2.8KLOC on October 8th at 2:30 UTC. API has lots
of growing to do, so wish it the best of luck.
Thanks to everyone who helped along the way:
Props rmccue, rachelbaker, danielbachhuber, joehoyle, drewapicture,
adamsilverstein, netweb, tlovett1, shelob9, kadamwhite, pento,
westonruter, nikv, tobych, redsweater, alecuf, pollyplummer, hurtige,
bpetty, oso96_2000, ericlewis, wonderboymusic, joshkadis, mordauk,
jdgrimes, johnbillion, jeremyfelt, thiago-negri, jdolan, pkevan,
iseulde, thenbrent, maxcutler, kwight, markoheijnen, phh, natewr,
jjeaton, shprink, mattheu, quasel, jmusal, codebykat, hubdotcom,
tapsboy, QWp6t, pushred, jaredcobb, justinsainton, japh, matrixik,
jorbin, frozzare, codfish, michael-arestad, kellbot, ironpaperweight,
simonlampen, alisspers, eliorivero, davidbhayes, JohnDittmar, dimadin,
traversal, cmmarslender, Toddses, kokarn, welcher, and ericpedia.
Fixes #33982.
Built from https://develop.svn.wordpress.org/trunk@34928
git-svn-id: http://core.svn.wordpress.org/trunk@34893 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-10-08 04:31:25 +02:00
|
|
|
add_action( 'parse_request', 'rest_api_loaded' );
|
|
|
|
|
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' );
|
2016-03-10 06:37:27 +01:00
|
|
|
add_action( 'wp_head', '_custom_logo_header_styles' );
|
2015-01-12 17:40:23 +01:00
|
|
|
add_action( 'plugins_loaded', '_wp_customize_include' );
|
Customize: Implement customized state persistence with changesets.
Includes infrastructure developed in the Customize Snapshots feature plugin.
See https://make.wordpress.org/core/2016/10/12/customize-changesets-technical-design-decisions/
Props westonruter, valendesigns, utkarshpatel, stubgo, lgedeon, ocean90, ryankienstra, mihai2u, dlh, aaroncampbell, jonathanbardo, jorbin.
See #28721.
See #31089.
Fixes #30937.
Fixes #31517.
Fixes #30028.
Fixes #23225.
Fixes #34142.
Fixes #36485.
Built from https://develop.svn.wordpress.org/trunk@38810
git-svn-id: http://core.svn.wordpress.org/trunk@38753 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-10-18 22:05:31 +02:00
|
|
|
add_action( 'transition_post_status', '_wp_customize_publish_changeset', 10, 3 );
|
2015-01-12 17:40:23 +01:00
|
|
|
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' );
|
2016-10-26 17:36:31 +02:00
|
|
|
add_action( 'change_locale', 'create_initial_post_types' );
|
2015-01-12 17:40:23 +01:00
|
|
|
|
|
|
|
// 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' );
|
2016-06-29 14:58:29 +02:00
|
|
|
add_action( 'wp_enqueue_scripts', 'wp_localize_jquery_ui_datepicker', 1000 );
|
|
|
|
add_action( 'admin_enqueue_scripts', 'wp_localize_jquery_ui_datepicker', 1000 );
|
2015-01-12 17:40:23 +01:00
|
|
|
add_filter( 'wp_print_scripts', 'wp_just_in_time_script_localization' );
|
|
|
|
add_filter( 'print_scripts_array', 'wp_prototype_before_jquery' );
|
2016-07-13 14:54:28 +02:00
|
|
|
add_filter( 'customize_controls_print_styles', 'wp_resource_hints', 1 );
|
2015-01-12 17:40:23 +01:00
|
|
|
|
|
|
|
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
|
2016-10-26 17:36:31 +02:00
|
|
|
add_action( 'change_locale', 'create_initial_taxonomies' );
|
2015-01-12 17:40:23 +01:00
|
|
|
|
|
|
|
// 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' );
|
2015-10-28 21:30:25 +01:00
|
|
|
add_action( 'before_signup_header', '_wp_admin_bar_init' );
|
2015-10-30 05:24:23 +01:00
|
|
|
add_action( 'activate_header', '_wp_admin_bar_init' );
|
2015-01-12 17:40:23 +01:00
|
|
|
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 );
|
|
|
|
|
Embeds: Add oEmbed provider support.
For the past 6 years, WordPress has operated as an oEmbed consumer, allowing users to easily embed content from other sites. By adding oEmbed provider support, this allows any oEmbed consumer to embed posts from WordPress sites.
In addition to creating an oEmbed provider, WordPress' oEmbed consumer code has been enhanced to work with any site that provides oEmbed data (as long as it matches some strict security rules), and provides a preview from within the post editor.
For security, embeds appear within a sandboxed iframe - the iframe content is a template that can be styled or replaced entirely by the theme on the provider site.
Props swissspidy, pento, melchoyce, netweb, pfefferle, johnbillion, extendwings, davidbinda, danielbachhuber, SergeyBiryukov, afercia
Fixes #32522.
Built from https://develop.svn.wordpress.org/trunk@34903
git-svn-id: http://core.svn.wordpress.org/trunk@34868 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-10-07 12:36:25 +02:00
|
|
|
// Embeds
|
2015-10-29 23:51:24 +01:00
|
|
|
add_action( 'rest_api_init', 'wp_oembed_register_route' );
|
|
|
|
add_filter( 'rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10, 4 );
|
|
|
|
|
|
|
|
add_action( 'wp_head', 'wp_oembed_add_discovery_links' );
|
|
|
|
add_action( 'wp_head', 'wp_oembed_add_host_js' );
|
|
|
|
|
2015-10-31 05:38:25 +01:00
|
|
|
add_action( 'embed_head', 'enqueue_embed_scripts', 1 );
|
2015-10-29 23:51:24 +01:00
|
|
|
add_action( 'embed_head', 'print_emoji_detection_script' );
|
|
|
|
add_action( 'embed_head', 'print_embed_styles' );
|
|
|
|
add_action( 'embed_head', 'wp_print_head_scripts', 20 );
|
|
|
|
add_action( 'embed_head', 'wp_print_styles', 20 );
|
|
|
|
add_action( 'embed_head', 'wp_no_robots' );
|
|
|
|
add_action( 'embed_head', 'rel_canonical' );
|
2016-07-08 08:07:33 +02:00
|
|
|
add_action( 'embed_head', 'locale_stylesheet', 30 );
|
2015-10-29 23:51:24 +01:00
|
|
|
|
2015-11-18 21:51:26 +01:00
|
|
|
add_action( 'embed_content_meta', 'print_embed_comments_button' );
|
|
|
|
add_action( 'embed_content_meta', 'print_embed_sharing_button' );
|
|
|
|
|
|
|
|
add_action( 'embed_footer', 'print_embed_sharing_dialog' );
|
2015-10-29 23:51:24 +01:00
|
|
|
add_action( 'embed_footer', 'print_embed_scripts' );
|
|
|
|
add_action( 'embed_footer', 'wp_print_footer_scripts', 20 );
|
|
|
|
|
|
|
|
add_filter( 'excerpt_more', 'wp_embed_excerpt_more', 20 );
|
|
|
|
add_filter( 'the_excerpt_embed', 'wptexturize' );
|
|
|
|
add_filter( 'the_excerpt_embed', 'convert_chars' );
|
|
|
|
add_filter( 'the_excerpt_embed', 'wpautop' );
|
|
|
|
add_filter( 'the_excerpt_embed', 'shortcode_unautop' );
|
|
|
|
add_filter( 'the_excerpt_embed', 'wp_embed_excerpt_attachment' );
|
|
|
|
|
|
|
|
add_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10, 3 );
|
|
|
|
add_filter( 'oembed_response_data', 'get_oembed_response_data_rich', 10, 4 );
|
2016-06-15 13:23:28 +02:00
|
|
|
add_filter( 'pre_oembed_result', 'wp_filter_pre_oembed_result', 10, 3 );
|
Embeds: Add oEmbed provider support.
For the past 6 years, WordPress has operated as an oEmbed consumer, allowing users to easily embed content from other sites. By adding oEmbed provider support, this allows any oEmbed consumer to embed posts from WordPress sites.
In addition to creating an oEmbed provider, WordPress' oEmbed consumer code has been enhanced to work with any site that provides oEmbed data (as long as it matches some strict security rules), and provides a preview from within the post editor.
For security, embeds appear within a sandboxed iframe - the iframe content is a template that can be styled or replaced entirely by the theme on the provider site.
Props swissspidy, pento, melchoyce, netweb, pfefferle, johnbillion, extendwings, davidbinda, danielbachhuber, SergeyBiryukov, afercia
Fixes #32522.
Built from https://develop.svn.wordpress.org/trunk@34903
git-svn-id: http://core.svn.wordpress.org/trunk@34868 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-10-07 12:36:25 +02:00
|
|
|
|
2015-01-12 17:40:23 +01:00
|
|
|
unset( $filter, $action );
|