19 add_filter( $filter, '_wp_specialchars', 30 ); |
19 add_filter( $filter, '_wp_specialchars', 30 ); |
20 } |
20 } |
21 |
21 |
22 // Strip, kses, special chars for string display |
22 // Strip, kses, special chars for string display |
23 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 ) { |
23 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 ) { |
24 add_filter( $filter, 'sanitize_text_field' ); |
24 if ( is_admin() ) { |
25 add_filter( $filter, 'wp_kses_data' ); |
25 // These are expensive. Run only on admin pages for defense in depth. |
|
26 add_filter( $filter, 'sanitize_text_field' ); |
|
27 add_filter( $filter, 'wp_kses_data' ); |
|
28 } |
26 add_filter( $filter, '_wp_specialchars', 30 ); |
29 add_filter( $filter, '_wp_specialchars', 30 ); |
27 } |
30 } |
28 |
31 |
29 // Kses only for textarea saves |
32 // Kses only for textarea saves |
30 foreach ( array( 'pre_term_description', 'pre_link_description', 'pre_link_notes', 'pre_user_description' ) as $filter ) { |
33 foreach ( array( 'pre_term_description', 'pre_link_description', 'pre_link_notes', 'pre_user_description' ) as $filter ) { |
31 add_filter( $filter, 'wp_filter_kses' ); |
34 add_filter( $filter, 'wp_filter_kses' ); |
32 } |
35 } |
33 |
36 |
34 // Kses only for textarea saves displays |
37 // Kses only for textarea admin displays |
35 foreach ( array( 'term_description', 'link_description', 'link_notes', 'user_description' ) as $filter ) { |
38 if ( is_admin() ) { |
36 add_filter( $filter, 'wp_kses_data' ); |
39 foreach ( array( 'term_description', 'link_description', 'link_notes', 'user_description' ) as $filter ) { |
|
40 add_filter( $filter, 'wp_kses_data' ); |
|
41 } |
|
42 add_filter( 'comment_text', 'wp_kses_post' ); |
37 } |
43 } |
38 |
44 |
39 // Email saves |
45 // Email saves |
40 foreach ( array( 'pre_comment_author_email', 'pre_user_email' ) as $filter ) { |
46 foreach ( array( 'pre_comment_author_email', 'pre_user_email' ) as $filter ) { |
41 add_filter( $filter, 'trim' ); |
47 add_filter( $filter, 'trim' ); |
42 add_filter( $filter, 'sanitize_email' ); |
48 add_filter( $filter, 'sanitize_email' ); |
43 add_filter( $filter, 'wp_filter_kses' ); |
49 add_filter( $filter, 'wp_filter_kses' ); |
44 } |
50 } |
45 |
51 |
46 // Email display |
52 // Email admin display |
47 foreach ( array( 'comment_author_email', 'user_email' ) as $filter ) { |
53 foreach ( array( 'comment_author_email', 'user_email' ) as $filter ) { |
48 add_filter( $filter, 'sanitize_email' ); |
54 add_filter( $filter, 'sanitize_email' ); |
49 add_filter( $filter, 'wp_kses_data' ); |
55 if ( is_admin() ) |
|
56 add_filter( $filter, 'wp_kses_data' ); |
50 } |
57 } |
51 |
58 |
52 // Save URL |
59 // Save URL |
53 foreach ( array( 'pre_comment_author_url', 'pre_user_url', 'pre_link_url', 'pre_link_image', |
60 foreach ( array( 'pre_comment_author_url', 'pre_user_url', 'pre_link_url', 'pre_link_image', |
54 'pre_link_rss' ) as $filter ) { |
61 'pre_link_rss', 'pre_post_guid' ) as $filter ) { |
55 add_filter( $filter, 'wp_strip_all_tags' ); |
62 add_filter( $filter, 'wp_strip_all_tags' ); |
56 add_filter( $filter, 'esc_url_raw' ); |
63 add_filter( $filter, 'esc_url_raw' ); |
57 add_filter( $filter, 'wp_filter_kses' ); |
64 add_filter( $filter, 'wp_filter_kses' ); |
58 } |
65 } |
59 |
66 |
60 // Display URL |
67 // Display URL |
61 foreach ( array( 'user_url', 'link_url', 'link_image', 'link_rss', 'comment_url' ) as $filter ) { |
68 foreach ( array( 'user_url', 'link_url', 'link_image', 'link_rss', 'comment_url', 'post_guid' ) as $filter ) { |
62 add_filter( $filter, 'wp_strip_all_tags' ); |
69 if ( is_admin() ) |
|
70 add_filter( $filter, 'wp_strip_all_tags' ); |
63 add_filter( $filter, 'esc_url' ); |
71 add_filter( $filter, 'esc_url' ); |
64 add_filter( $filter, 'wp_kses_data' ); |
72 if ( is_admin() ) |
|
73 add_filter( $filter, 'wp_kses_data' ); |
65 } |
74 } |
66 |
75 |
67 // Slugs |
76 // Slugs |
68 foreach ( array( 'pre_term_slug' ) as $filter ) { |
77 foreach ( array( 'pre_term_slug' ) as $filter ) { |
69 add_filter( $filter, 'sanitize_title' ); |
78 add_filter( $filter, 'sanitize_title' ); |
70 } |
79 } |
71 |
80 |
72 // Keys |
81 // Keys |
73 foreach ( array( 'pre_post_type' ) as $filter ) { |
82 foreach ( array( 'pre_post_type', 'pre_post_status', 'pre_post_comment_status', 'pre_post_ping_status' ) as $filter ) { |
74 add_filter( $filter, 'sanitize_user' ); |
83 add_filter( $filter, 'sanitize_key' ); |
75 } |
84 } |
|
85 |
|
86 // Mime types |
|
87 add_filter( 'pre_post_mime_type', 'sanitize_mime_type' ); |
|
88 add_filter( 'post_mime_type', 'sanitize_mime_type' ); |
76 |
89 |
77 // Places to balance tags on input |
90 // Places to balance tags on input |
78 foreach ( array( 'content_save_pre', 'excerpt_save_pre', 'comment_save_pre', 'pre_comment_content' ) as $filter ) { |
91 foreach ( array( 'content_save_pre', 'excerpt_save_pre', 'comment_save_pre', 'pre_comment_content' ) as $filter ) { |
79 add_filter( $filter, 'balanceTags', 50 ); |
92 add_filter( $filter, 'balanceTags', 50 ); |
80 } |
93 } |
144 add_filter( 'comment_text_rss', 'esc_html' ); |
171 add_filter( 'comment_text_rss', 'esc_html' ); |
145 add_filter( 'bloginfo_rss', 'ent2ncr', 8 ); |
172 add_filter( 'bloginfo_rss', 'ent2ncr', 8 ); |
146 add_filter( 'the_author', 'ent2ncr', 8 ); |
173 add_filter( 'the_author', 'ent2ncr', 8 ); |
147 |
174 |
148 // Misc filters |
175 // Misc filters |
149 add_filter( 'option_ping_sites', 'privacy_ping_filter' ); |
176 add_filter( 'option_ping_sites', 'privacy_ping_filter' ); |
150 add_filter( 'option_blog_charset', '_wp_specialchars' ); // IMPORTANT: This must not be wp_specialchars() or esc_html() or it'll cause an infinite loop |
177 add_filter( 'option_blog_charset', '_wp_specialchars' ); // IMPORTANT: This must not be wp_specialchars() or esc_html() or it'll cause an infinite loop |
151 add_filter( 'option_home', '_config_wp_home' ); |
178 add_filter( 'option_home', '_config_wp_home' ); |
152 add_filter( 'option_siteurl', '_config_wp_siteurl' ); |
179 add_filter( 'option_siteurl', '_config_wp_siteurl' ); |
153 add_filter( 'tiny_mce_before_init', '_mce_set_direction' ); |
180 add_filter( 'tiny_mce_before_init', '_mce_set_direction' ); |
154 add_filter( 'pre_kses', 'wp_pre_kses_less_than' ); |
181 add_filter( 'pre_kses', 'wp_pre_kses_less_than' ); |
155 add_filter( 'sanitize_title', 'sanitize_title_with_dashes' ); |
182 add_filter( 'sanitize_title', 'sanitize_title_with_dashes', 10, 3 ); |
156 add_action( 'check_comment_flood', 'check_comment_flood_db', 10, 3 ); |
183 add_action( 'check_comment_flood', 'check_comment_flood_db', 10, 3 ); |
157 add_filter( 'comment_flood_filter', 'wp_throttle_comment_flood', 10, 3 ); |
184 add_filter( 'comment_flood_filter', 'wp_throttle_comment_flood', 10, 3 ); |
158 add_filter( 'pre_comment_content', 'wp_rel_nofollow', 15 ); |
185 add_filter( 'pre_comment_content', 'wp_rel_nofollow', 15 ); |
159 add_filter( 'comment_email', 'antispambot' ); |
186 add_filter( 'comment_email', 'antispambot' ); |
160 add_filter( 'option_tag_base', '_wp_filter_taxonomy_base' ); |
187 add_filter( 'option_tag_base', '_wp_filter_taxonomy_base' ); |
161 add_filter( 'option_category_base', '_wp_filter_taxonomy_base' ); |
188 add_filter( 'option_category_base', '_wp_filter_taxonomy_base' ); |
162 add_filter( 'the_posts', '_close_comments_for_old_posts' ); |
189 add_filter( 'the_posts', '_close_comments_for_old_posts', 10, 2); |
163 add_filter( 'comments_open', '_close_comments_for_old_post', 10, 2 ); |
190 add_filter( 'comments_open', '_close_comments_for_old_post', 10, 2 ); |
164 add_filter( 'pings_open', '_close_comments_for_old_post', 10, 2 ); |
191 add_filter( 'pings_open', '_close_comments_for_old_post', 10, 2 ); |
165 add_filter( 'editable_slug', 'urldecode' ); |
192 add_filter( 'editable_slug', 'urldecode' ); |
166 |
193 add_filter( 'editable_slug', 'esc_textarea' ); |
167 // Atom SSL support |
194 add_filter( 'nav_menu_meta_box_object', '_wp_nav_menu_meta_box_object' ); |
168 add_filter( 'atom_service_url','atom_service_url_filter' ); |
|
169 |
195 |
170 // Actions |
196 // Actions |
171 add_action( 'wp_head', 'wp_enqueue_scripts', 1 ); |
197 add_action( 'wp_head', 'wp_enqueue_scripts', 1 ); |
172 add_action( 'wp_head', 'feed_links_extra', 3 ); |
198 add_action( 'wp_head', 'feed_links', 2 ); |
173 add_action( 'wp_head', 'rsd_link' ); |
199 add_action( 'wp_head', 'feed_links_extra', 3 ); |
174 add_action( 'wp_head', 'wlwmanifest_link' ); |
200 add_action( 'wp_head', 'rsd_link' ); |
175 add_action( 'wp_head', 'index_rel_link' ); |
201 add_action( 'wp_head', 'wlwmanifest_link' ); |
176 add_action( 'wp_head', 'parent_post_rel_link', 10, 0 ); |
202 add_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 ); |
177 add_action( 'wp_head', 'start_post_rel_link', 10, 0 ); |
203 add_action( 'wp_head', 'locale_stylesheet' ); |
178 add_action( 'wp_head', 'adjacent_posts_rel_link', 10, 0 ); |
204 add_action( 'publish_future_post', 'check_and_publish_future_post', 10, 1 ); |
179 add_action( 'wp_head', 'locale_stylesheet' ); |
205 add_action( 'wp_head', 'noindex', 1 ); |
180 add_action( 'publish_future_post', 'check_and_publish_future_post', 10, 1 ); |
206 add_action( 'wp_head', 'wp_print_styles', 8 ); |
181 add_action( 'wp_head', 'noindex', 1 ); |
207 add_action( 'wp_head', 'wp_print_head_scripts', 9 ); |
182 add_action( 'wp_head', 'wp_print_styles', 8 ); |
208 add_action( 'wp_head', 'wp_generator' ); |
183 add_action( 'wp_head', 'wp_print_head_scripts', 9 ); |
209 add_action( 'wp_head', 'rel_canonical' ); |
184 add_action( 'wp_head', 'wp_generator' ); |
210 add_action( 'wp_footer', 'wp_print_footer_scripts', 20 ); |
185 add_action( 'wp_head', 'rel_canonical' ); |
211 add_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 ); |
186 add_action( 'wp_footer', 'wp_print_footer_scripts' ); |
212 add_action( 'template_redirect', 'wp_shortlink_header', 11, 0 ); |
|
213 add_action( 'wp_print_footer_scripts', '_wp_footer_scripts' ); |
|
214 add_action( 'init', 'check_theme_switched', 99 ); |
|
215 add_action( 'after_switch_theme', '_wp_sidebars_changed' ); |
|
216 |
|
217 if ( isset( $_GET['replytocom'] ) ) |
|
218 add_action( 'wp_head', 'wp_no_robots' ); |
|
219 |
|
220 // Login actions |
|
221 add_action( 'login_head', 'wp_print_head_scripts', 9 ); |
|
222 add_action( 'login_footer', 'wp_print_footer_scripts', 20 ); |
|
223 add_action( 'login_init', 'send_frame_options_header', 10, 0 ); |
|
224 |
|
225 // Feed Generator Tags |
|
226 foreach ( array( 'rss2_head', 'commentsrss2_head', 'rss_head', 'rdf_header', 'atom_head', 'comments_atom_head', 'opml_head', 'app_head' ) as $action ) { |
|
227 add_action( $action, 'the_generator' ); |
|
228 } |
187 |
229 |
188 // WP Cron |
230 // WP Cron |
189 if ( !defined( 'DOING_CRON' ) ) |
231 if ( !defined( 'DOING_CRON' ) ) |
190 add_action( 'sanitize_comment_cookies', 'wp_cron' ); |
232 add_action( 'init', 'wp_cron' ); |
191 |
233 |
192 // 2 Actions 2 Furious |
234 // 2 Actions 2 Furious |
193 add_action( 'do_feed_rdf', 'do_feed_rdf', 10, 1 ); |
235 add_action( 'do_feed_rdf', 'do_feed_rdf', 10, 1 ); |
194 add_action( 'do_feed_rss', 'do_feed_rss', 10, 1 ); |
236 add_action( 'do_feed_rss', 'do_feed_rss', 10, 1 ); |
195 add_action( 'do_feed_rss2', 'do_feed_rss2', 10, 1 ); |
237 add_action( 'do_feed_rss2', 'do_feed_rss2', 10, 1 ); |
196 add_action( 'do_feed_atom', 'do_feed_atom', 10, 1 ); |
238 add_action( 'do_feed_atom', 'do_feed_atom', 10, 1 ); |
197 add_action( 'do_pings', 'do_all_pings', 10, 1 ); |
239 add_action( 'do_pings', 'do_all_pings', 10, 1 ); |
198 add_action( 'do_robots', 'do_robots' ); |
240 add_action( 'do_robots', 'do_robots' ); |
199 add_action( 'sanitize_comment_cookies', 'sanitize_comment_cookies' ); |
241 add_action( 'set_comment_cookies', 'wp_set_comment_cookies', 10, 2 ); |
200 add_action( 'admin_print_scripts', 'print_head_scripts', 20 ); |
242 add_action( 'sanitize_comment_cookies', 'sanitize_comment_cookies' ); |
201 add_action( 'admin_print_footer_scripts', 'print_footer_scripts', 20 ); |
243 add_action( 'admin_print_scripts', 'print_head_scripts', 20 ); |
202 add_action( 'admin_print_styles', 'print_admin_styles', 20 ); |
244 add_action( 'admin_print_footer_scripts', '_wp_footer_scripts' ); |
203 add_action( 'init', 'smilies_init', 5 ); |
245 add_action( 'admin_print_styles', 'print_admin_styles', 20 ); |
204 add_action( 'plugins_loaded', 'wp_maybe_load_widgets', 0 ); |
246 add_action( 'init', 'smilies_init', 5 ); |
205 add_action( 'plugins_loaded', 'wp_maybe_load_embeds', 0 ); |
247 add_action( 'plugins_loaded', 'wp_maybe_load_widgets', 0 ); |
206 add_action( 'shutdown', 'wp_ob_end_flush_all', 1 ); |
248 add_action( 'plugins_loaded', 'wp_maybe_load_embeds', 0 ); |
207 add_action( 'pre_post_update', 'wp_save_post_revision' ); |
249 add_action( 'shutdown', 'wp_ob_end_flush_all', 1 ); |
208 add_action( 'publish_post', '_publish_post_hook', 5, 1 ); |
250 add_action( 'pre_post_update', 'wp_save_post_revision' ); |
209 add_action( 'future_post', '_future_post_hook', 5, 2 ); |
251 add_action( 'publish_post', '_publish_post_hook', 5, 1 ); |
210 add_action( 'future_page', '_future_post_hook', 5, 2 ); |
252 add_action( 'save_post', '_save_post_hook', 5, 2 ); |
211 add_action( 'save_post', '_save_post_hook', 5, 2 ); |
253 add_action( 'transition_post_status', '_transition_post_status', 5, 3 ); |
212 add_action( 'transition_post_status', '_transition_post_status', 5, 3 ); |
254 add_action( 'transition_post_status', '_update_term_count_on_transition_post_status', 10, 3 ); |
213 add_action( 'comment_form', 'wp_comment_form_unfiltered_html_nonce' ); |
255 add_action( 'comment_form', 'wp_comment_form_unfiltered_html_nonce' ); |
214 add_action( 'wp_scheduled_delete', 'wp_scheduled_delete' ); |
256 add_action( 'wp_scheduled_delete', 'wp_scheduled_delete' ); |
|
257 add_action( 'wp_scheduled_auto_draft_delete', 'wp_delete_auto_drafts' ); |
|
258 add_action( 'admin_init', 'send_frame_options_header', 10, 0 ); |
|
259 add_action( 'importer_scheduled_cleanup', 'wp_delete_attachment' ); |
|
260 add_action( 'upgrader_scheduled_cleanup', 'wp_delete_attachment' ); |
|
261 |
|
262 // Navigation menu actions |
|
263 add_action( 'delete_post', '_wp_delete_post_menu_item' ); |
|
264 add_action( 'delete_term', '_wp_delete_tax_menu_item' ); |
|
265 add_action( 'transition_post_status', '_wp_auto_add_pages_to_menu', 10, 3 ); |
215 |
266 |
216 // Post Thumbnail CSS class filtering |
267 // Post Thumbnail CSS class filtering |
217 add_action( 'begin_fetch_post_thumbnail_html', '_wp_post_thumbnail_class_filter_add' ); |
268 add_action( 'begin_fetch_post_thumbnail_html', '_wp_post_thumbnail_class_filter_add' ); |
218 add_action( 'end_fetch_post_thumbnail_html', '_wp_post_thumbnail_class_filter_remove' ); |
269 add_action( 'end_fetch_post_thumbnail_html', '_wp_post_thumbnail_class_filter_remove' ); |
219 |
270 |
220 // Redirect Old Slugs |
271 // Redirect Old Slugs |
221 add_action( 'template_redirect', 'wp_old_slug_redirect' ); |
272 add_action( 'template_redirect', 'wp_old_slug_redirect' ); |
222 add_action( 'edit_post', 'wp_check_for_changed_slugs' ); |
273 add_action( 'post_updated', 'wp_check_for_changed_slugs', 12, 3 ); |
223 add_action( 'edit_form_advanced', 'wp_remember_old_slug' ); |
274 |
224 add_action( 'init', '_show_post_preview' ); |
275 // Nonce check for Post Previews |
|
276 add_action( 'init', '_show_post_preview' ); |
225 |
277 |
226 // Timezone |
278 // Timezone |
227 add_filter( 'pre_option_gmt_offset','wp_timezone_override_offset' ); |
279 add_filter( 'pre_option_gmt_offset','wp_timezone_override_offset' ); |
|
280 |
|
281 // Admin Color Schemes |
|
282 add_action( 'admin_init', 'register_admin_color_schemes', 1); |
|
283 add_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' ); |
|
284 |
|
285 unset($filter, $action); |