1 | <?php |
2 | /** |
3 | * Sets up the default filters and actions for most |
4 | * of the WordPress hooks. |
5 | * |
6 | * If you need to remove a default hook, this file will |
7 | * give you the priority for which to use to remove the |
8 | * hook. |
9 | * |
10 | * Not all of the default hooks are found in default-filters.php |
11 | * |
12 | * @package WordPress |
13 | */ |
14 | |
15 | // Strip, trim, kses, special chars for string saves |
16 | 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 ) { |
17 | add_filter( $filter, 'sanitize_text_field' ); |
18 | add_filter( $filter, 'wp_filter_kses' ); |
19 | add_filter( $filter, '_wp_specialchars', 30 ); |
20 | } |
21 | |
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 ) { |
24 | add_filter( $filter, 'sanitize_text_field' ); |
25 | add_filter( $filter, 'wp_kses_data' ); |
26 | add_filter( $filter, '_wp_specialchars', 30 ); |
27 | } |
28 | |
29 | // Kses only for textarea saves |
30 | foreach ( array( 'pre_term_description', 'pre_link_description', 'pre_link_notes', 'pre_user_description' ) as $filter ) { |
31 | add_filter( $filter, 'wp_filter_kses' ); |
32 | } |
33 | |
34 | // Kses only for textarea saves displays |
35 | foreach ( array( 'term_description', 'link_description', 'link_notes', 'user_description' ) as $filter ) { |
36 | add_filter( $filter, 'wp_kses_data' ); |
37 | } |
38 | |
39 | // Email saves |
40 | foreach ( array( 'pre_comment_author_email', 'pre_user_email' ) as $filter ) { |
41 | add_filter( $filter, 'trim' ); |
42 | add_filter( $filter, 'sanitize_email' ); |
43 | add_filter( $filter, 'wp_filter_kses' ); |
44 | } |
45 | |
46 | // Email display |
47 | foreach ( array( 'comment_author_email', 'user_email' ) as $filter ) { |
48 | add_filter( $filter, 'sanitize_email' ); |
49 | add_filter( $filter, 'wp_kses_data' ); |
50 | } |
51 | |
52 | // Save URL |
53 | foreach ( array( 'pre_comment_author_url', 'pre_user_url', 'pre_link_url', 'pre_link_image', |
54 | 'pre_link_rss' ) as $filter ) { |
55 | add_filter( $filter, 'wp_strip_all_tags' ); |
56 | add_filter( $filter, 'esc_url_raw' ); |
57 | add_filter( $filter, 'wp_filter_kses' ); |
58 | } |
59 | |
60 | // Display URL |
61 | foreach ( array( 'user_url', 'link_url', 'link_image', 'link_rss', 'comment_url' ) as $filter ) { |
62 | add_filter( $filter, 'wp_strip_all_tags' ); |
63 | add_filter( $filter, 'esc_url' ); |
64 | add_filter( $filter, 'wp_kses_data' ); |
65 | } |
66 | |
67 | // Slugs |
68 | foreach ( array( 'pre_term_slug' ) as $filter ) { |
69 | add_filter( $filter, 'sanitize_title' ); |
70 | } |
71 | |
72 | // Keys |
73 | foreach ( array( 'pre_post_type' ) as $filter ) { |
74 | add_filter( $filter, 'sanitize_user' ); |
75 | } |
76 | |
77 | // Places to balance tags on input |
78 | foreach ( array( 'content_save_pre', 'excerpt_save_pre', 'comment_save_pre', 'pre_comment_content' ) as $filter ) { |
79 | add_filter( $filter, 'balanceTags', 50 ); |
80 | } |
81 | |
82 | // Format strings for display. |
83 | foreach ( array( 'comment_author', 'term_name', 'link_name', 'link_description', 'link_notes', 'bloginfo', 'wp_title', 'widget_title' ) as $filter ) { |
84 | add_filter( $filter, 'wptexturize' ); |
85 | add_filter( $filter, 'convert_chars' ); |
86 | add_filter( $filter, 'esc_html' ); |
87 | } |
88 | |
89 | // Format WordPress |
90 | foreach ( array( 'the_content', 'the_title', 'comment_text' ) as $filter ) |
91 | add_filter( $filter, 'capital_P_dangit', 11 ); |
92 | |
93 | // Format titles |
94 | foreach ( array( 'single_post_title', 'single_cat_title', 'single_tag_title', 'single_month_title', 'nav_menu_attr_title', 'nav_menu_description' ) as $filter ) { |
95 | add_filter( $filter, 'wptexturize' ); |
96 | add_filter( $filter, 'strip_tags' ); |
97 | } |
98 | |
99 | // Format text area for display. |
100 | foreach ( array( 'term_description' ) as $filter ) { |
101 | add_filter( $filter, 'wptexturize' ); |
102 | add_filter( $filter, 'convert_chars' ); |
103 | add_filter( $filter, 'wpautop' ); |
104 | add_filter( $filter, 'shortcode_unautop'); |
105 | } |
106 | |
107 | // Format for RSS |
108 | foreach ( array( 'term_name_rss' ) as $filter ) { |
109 | add_filter( $filter, 'convert_chars' ); |
110 | } |
111 | |
112 | // Display filters |
113 | add_filter( 'the_title', 'wptexturize' ); |
114 | add_filter( 'the_title', 'convert_chars' ); |
115 | add_filter( 'the_title', 'trim' ); |
116 | |
117 | add_filter( 'the_content', 'wptexturize' ); |
118 | add_filter( 'the_content', 'convert_smilies' ); |
119 | add_filter( 'the_content', 'convert_chars' ); |
120 | add_filter( 'the_content', 'wpautop' ); |
121 | add_filter( 'the_content', 'shortcode_unautop' ); |
122 | add_filter( 'the_content', 'prepend_attachment' ); |
123 | |
124 | add_filter( 'the_excerpt', 'wptexturize' ); |
125 | add_filter( 'the_excerpt', 'convert_smilies' ); |
126 | add_filter( 'the_excerpt', 'convert_chars' ); |
127 | add_filter( 'the_excerpt', 'wpautop' ); |
128 | add_filter( 'the_excerpt', 'shortcode_unautop'); |
129 | add_filter( 'get_the_excerpt', 'wp_trim_excerpt' ); |
130 | |
131 | add_filter( 'comment_text', 'wptexturize' ); |
132 | add_filter( 'comment_text', 'convert_chars' ); |
133 | add_filter( 'comment_text', 'make_clickable', 9 ); |
134 | add_filter( 'comment_text', 'force_balance_tags', 25 ); |
135 | add_filter( 'comment_text', 'convert_smilies', 20 ); |
136 | add_filter( 'comment_text', 'wpautop', 30 ); |
137 | |
138 | add_filter( 'comment_excerpt', 'convert_chars' ); |
139 | |
140 | add_filter( 'list_cats', 'wptexturize' ); |
141 | add_filter( 'single_post_title', 'wptexturize' ); |
142 | |
143 | add_filter( 'wp_sprintf', 'wp_sprintf_l', 10, 2 ); |
144 | |
145 | // RSS filters |
146 | add_filter( 'the_title_rss', 'strip_tags' ); |
147 | add_filter( 'the_title_rss', 'ent2ncr', 8 ); |
148 | add_filter( 'the_title_rss', 'esc_html' ); |
149 | add_filter( 'the_content_rss', 'ent2ncr', 8 ); |
150 | add_filter( 'the_excerpt_rss', 'convert_chars' ); |
151 | add_filter( 'the_excerpt_rss', 'ent2ncr', 8 ); |
152 | add_filter( 'comment_author_rss', 'ent2ncr', 8 ); |
153 | add_filter( 'comment_text_rss', 'ent2ncr', 8 ); |
154 | add_filter( 'comment_text_rss', 'esc_html' ); |
155 | add_filter( 'bloginfo_rss', 'ent2ncr', 8 ); |
156 | add_filter( 'the_author', 'ent2ncr', 8 ); |
157 | |
158 | // Misc filters |
159 | add_filter( 'option_ping_sites', 'privacy_ping_filter' ); |
160 | add_filter( 'option_blog_charset', '_wp_specialchars' ); // IMPORTANT: This must not be wp_specialchars() or esc_html() or it'll cause an infinite loop |
161 | add_filter( 'option_home', '_config_wp_home' ); |
162 | add_filter( 'option_siteurl', '_config_wp_siteurl' ); |
163 | add_filter( 'tiny_mce_before_init', '_mce_set_direction' ); |
164 | add_filter( 'pre_kses', 'wp_pre_kses_less_than' ); |
165 | add_filter( 'sanitize_title', 'sanitize_title_with_dashes' ); |
166 | add_action( 'check_comment_flood', 'check_comment_flood_db', 10, 3 ); |
167 | add_filter( 'comment_flood_filter', 'wp_throttle_comment_flood', 10, 3 ); |
168 | add_filter( 'pre_comment_content', 'wp_rel_nofollow', 15 ); |
169 | add_filter( 'comment_email', 'antispambot' ); |
170 | add_filter( 'option_tag_base', '_wp_filter_taxonomy_base' ); |
171 | add_filter( 'option_category_base', '_wp_filter_taxonomy_base' ); |
172 | add_filter( 'the_posts', '_close_comments_for_old_posts' ); |
173 | add_filter( 'comments_open', '_close_comments_for_old_post', 10, 2 ); |
174 | add_filter( 'pings_open', '_close_comments_for_old_post', 10, 2 ); |
175 | add_filter( 'editable_slug', 'urldecode' ); |
176 | add_filter( 'nav_menu_meta_box_object', '_wp_nav_menu_meta_box_object' ); |
177 | |
178 | // Atom SSL support |
179 | add_filter( 'atom_service_url','atom_service_url_filter' ); |
180 | |
181 | // Actions |
182 | add_action( 'wp_head', 'wp_enqueue_scripts', 1 ); |
183 | add_action( 'wp_head', 'feed_links', 2 ); |
184 | add_action( 'wp_head', 'feed_links_extra', 3 ); |
185 | add_action( 'wp_head', 'rsd_link' ); |
186 | add_action( 'wp_head', 'wlwmanifest_link' ); |
187 | add_action( 'wp_head', 'index_rel_link' ); |
188 | add_action( 'wp_head', 'parent_post_rel_link', 10, 0 ); |
189 | add_action( 'wp_head', 'start_post_rel_link', 10, 0 ); |
190 | add_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 ); |
191 | add_action( 'wp_head', 'locale_stylesheet' ); |
192 | add_action( 'publish_future_post', 'check_and_publish_future_post', 10, 1 ); |
193 | add_action( 'wp_head', 'noindex', 1 ); |
194 | add_action( 'wp_head', 'wp_print_styles', 8 ); |
195 | add_action( 'wp_head', 'wp_print_head_scripts', 9 ); |
196 | add_action( 'wp_head', 'wp_generator' ); |
197 | add_action( 'wp_head', 'rel_canonical' ); |
198 | add_action( 'wp_footer', 'wp_print_footer_scripts' ); |
199 | add_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 ); |
200 | add_action( 'template_redirect', 'wp_shortlink_header', 11, 0 ); |
201 | |
202 | // Feed Generator Tags |
203 | foreach ( array( 'rss2_head', 'commentsrss2_head', 'rss_head', 'rdf_header', 'atom_head', 'comments_atom_head', 'opml_head', 'app_head' ) as $action ) { |
204 | add_action( $action, 'the_generator' ); |
205 | } |
206 | |
207 | // WP Cron |
208 | if ( !defined( 'DOING_CRON' ) ) |
209 | add_action( 'sanitize_comment_cookies', 'wp_cron' ); |
210 | |
211 | // 2 Actions 2 Furious |
212 | add_action( 'do_feed_rdf', 'do_feed_rdf', 10, 1 ); |
213 | add_action( 'do_feed_rss', 'do_feed_rss', 10, 1 ); |
214 | add_action( 'do_feed_rss2', 'do_feed_rss2', 10, 1 ); |
215 | add_action( 'do_feed_atom', 'do_feed_atom', 10, 1 ); |
216 | add_action( 'do_pings', 'do_all_pings', 10, 1 ); |
217 | add_action( 'do_robots', 'do_robots' ); |
218 | add_action( 'sanitize_comment_cookies', 'sanitize_comment_cookies' ); |
219 | add_action( 'admin_print_scripts', 'print_head_scripts', 20 ); |
220 | add_action( 'admin_print_footer_scripts', 'print_footer_scripts', 20 ); |
221 | add_action( 'admin_print_styles', 'print_admin_styles', 20 ); |
222 | add_action( 'init', 'smilies_init', 5 ); |
223 | add_action( 'plugins_loaded', 'wp_maybe_load_widgets', 0 ); |
224 | add_action( 'plugins_loaded', 'wp_maybe_load_embeds', 0 ); |
225 | add_action( 'shutdown', 'wp_ob_end_flush_all', 1 ); |
226 | add_action( 'pre_post_update', 'wp_save_post_revision' ); |
227 | add_action( 'publish_post', '_publish_post_hook', 5, 1 ); |
228 | add_action( 'save_post', '_save_post_hook', 5, 2 ); |
229 | add_action( 'transition_post_status', '_transition_post_status', 5, 3 ); |
230 | add_action( 'comment_form', 'wp_comment_form_unfiltered_html_nonce' ); |
231 | add_action( 'wp_scheduled_delete', 'wp_scheduled_delete' ); |
232 | |
233 | // Navigation menu actions |
234 | add_action( 'delete_post', '_wp_delete_post_menu_item' ); |
235 | add_action( 'delete_term', '_wp_delete_tax_menu_item' ); |
236 | add_action( 'transition_post_status', '_wp_auto_add_pages_to_menu', 10, 3 ); |
237 | |
238 | // Post Thumbnail CSS class filtering |
239 | add_action( 'begin_fetch_post_thumbnail_html', '_wp_post_thumbnail_class_filter_add' ); |
240 | add_action( 'end_fetch_post_thumbnail_html', '_wp_post_thumbnail_class_filter_remove' ); |
241 | |
242 | // Redirect Old Slugs |
243 | add_action( 'template_redirect', 'wp_old_slug_redirect' ); |
244 | add_action( 'post_updated', 'wp_check_for_changed_slugs', 12, 3 ); |
245 | |
246 | // Nonce check for Post Previews |
247 | add_action( 'init', '_show_post_preview' ); |
248 | |
249 | // Timezone |
250 | add_filter( 'pre_option_gmt_offset','wp_timezone_override_offset' ); |
251 | |
252 | // Admin Color Schemes |
253 | add_action( 'admin_init', 'register_admin_color_schemes', 1); |
254 | add_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' ); |
255 | |
256 | ?> |
257 | |