There's a Filter For That

11,000 views
10,859 views

Published on

Presented at WordCamp Albuquerque, Sept. 14, 2013.

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
11,000
On SlideShare
0
From Embeds
0
Number of Embeds
7,734
Actions
Shares
0
Downloads
9
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

There's a Filter For That

  1. 1. drewf.us/wcabq13 THERE’S A FILTER FORTHAT Drew Jaynes | WCABQ ’13
  2. 2. drewf.us/wcabq13 WHO I AM Drew Jaynes Web Engineer, 10up Core Contributor WordPress Docs Team
  3. 3. drewf.us/wcabq13 WHAT IS A FILTER? A filter is a function that: 1.Takes a specific WordPress value 2. (maybe) modifies it 3. Spits the resulting value back out
  4. 4. drewf.us/wcabq13 OK ... ?
  5. 5. drewf.us/wcabq13 apply_filters()
  6. 6. drewf.us/wcabq13 apply_filters() – 1,300+ filter hooks in core (3.6+) – Filter values of all types, modify default behavior – Multiple filters run per hook, based on priority
  7. 7. drewf.us/wcabq13 ADDING OR REMOVING FILTERS add_filter( 'hook_name', 'callback', #priority, #args ); – When removing a filter, the hook, callback and priority must match exactly. Fails silently. remove_filter( 'hook_name', 'callback', #priority ); – Define priority any time. Define the args count + 1 if additional args are passed from the filter hook
  8. 8. drewf.us/wcabq13 ALLTOGETHER NOW // $value is filterable apply_filters( ‘hook_name’, $value, (optional) $args ); function callback( $value, $arg ) { // do stuff return $value; } add_filter( 'hook_name', 'callback', 10, 2 );
  9. 9. drewf.us/wcabq13 CONTENT
  10. 10. drewf.us/wcabq13 ‘enter_title_here’ Args:(string $enter_title_here, WP_Post $post) – Match title prompt text to your custom post type – Adds polish to the experience Filter ‘Enter title here’ placeholder text
  11. 11. drewf.us/wcabq13 ‘post_updated_messages’ Args:(array $messages) – Not handled by WordPress out of the box – Use with custom post types – Customize ‘Post updated’,‘Post deleted’, etc. Filter post updated|published|trashed|etc. messages.
  12. 12. drewf.us/wcabq13 ‘admin_post_thumbnail_html’ Args:(string $content, int $post->ID) ‘media_view_strings’ Args:(array $strings, WP_Post $post) Filter HTML output of Featured Image meta box Filter media strings localized for JavaScript
  13. 13. drewf.us/wcabq13 WORKFLOW
  14. 14. drewf.us/wcabq13 ‘the_editor_content’ Args:(string $content) – Pre-fab post template – Check if the content is empty Filter the content in the editor (new and existing posts)
  15. 15. drewf.us/wcabq13 ‘custom_menu_order’ Args:(bool false) Enable/disable custom admin menu ordering ‘menu_order’ Args:(array $menu_order) Filter the top-level menu order in the admin menu
  16. 16. drewf.us/wcabq13 ‘custom_menu_order’ // enable custom menu order add_filter( ‘custom_menu_order’, __return_true’ );
  17. 17. drewf.us/wcabq13 ‘menu_order’ function change_menu_order( $menu_order ); return array( 'index.php', 'separator1', 'edit.php', 'edit.php?post_type=page', 'users.php', 'upload.php', 'edit-comments.php', 'separator2', 'themes.php', 'plugins.php', 'tools.php', 'options-general.php', 'separator-last' ); } add_filter( ‘menu_order’, ‘change_menu_order’ );
  18. 18. drewf.us/wcabq13 ‘default_hidden_meta_boxes’ Args:(array $hidden, WP_Screen $screen) – Standardize UX for all users – Doesn’t prevent future user changes Contextually filter meta boxes hidden by default
  19. 19. drewf.us/wcabq13 ‘post_types_to_delete_with_user’ Args:(array $post_types_to_delete, int $id) – Overrides ‘delete_with_user’ post type setting Filter which post types to delete with a user
  20. 20. drewf.us/wcabq13 FRONT-END
  21. 21. drewf.us/wcabq13 ‘the_content’ (string $content) – Frequently used and abused in themes and plugins – Litmus test: is it content? Filter the post content
  22. 22. drewf.us/wcabq13 ‘post|body_class’ Args:(array $classes) – Reliant on themes using post|body_class() in templates – Style things in specific contexts, e.g. post_type, post format, etc. Filter body classes or post classes
  23. 23. drewf.us/wcabq13 ‘excerpt_length’ Args:(int $number) – Commonly filtered by themes, default is 55 characters Filter the length (in characters) of the excerpt
  24. 24. drewf.us/wcabq13 ‘show_admin_bar’ (bool true) // Disable Toolbar add_filter( ‘show_admin_bar’, ‘__return_false’ ); Show/hide theToolbar on the front-end
  25. 25. drewf.us/wcabq13 ‘disable_captions’ (bool false) // Disable captions add_filter( ‘disable_captions’, ‘__return_true’ ); Disable/enable image captions
  26. 26. drewf.us/wcabq13 DEVELOPMENT
  27. 27. drewf.us/wcabq13 ‘plugins|themes_api_*’ – Different result object, arguments, or complete overhaul Filter plugin or theme installer pages ‘plugins|themes_api_args’ ‘plugins|themes_api’ ‘plugins|themes_api_result’
  28. 28. drewf.us/wcabq13 ‘enable_post_by_email_configuration’ Args:(bool false) // disable post by email add_filter( ‘enable_post_by_email_configuration’, ‘__return_false’ ); Enable/disable Post by Email
  29. 29. drewf.us/wcabq13 MOAR DEV FILTERS ‘request’ Args:(array $query_vars) Directly filter the current request’s query vars ‘shortcode_atts_$shortcode’ Args:(array $out, array $pairs, array $atts) Filter a shortcode’s default attributes (3.6+) – Output atts, default atts, user-defined atts
  30. 30. drewf.us/wcabq13 MOAR DEV FILTERS ‘wp_xmlrpc_server_class’ Args:(string $class) Filter the class used for handling XML-RPC requests ‘xmlrpc_methods’ Args:(array $methods) Register custom XML-RPC methods
  31. 31. drewf.us/wcabq13 QUESTIONS?

×