+ All Categories
Home > Self Improvement > There's a Filter For That

There's a Filter For That

Date post: 06-May-2015
Category:
Upload: drewapicture
View: 10,351 times
Download: 1 times
Share this document with a friend
Description:
Presented at WordCamp Albuquerque, Sept. 14, 2013.
Popular Tags:
31
drewf.us/wcabq13 THERE’S A FILTER FOR THAT Drew Jaynes | WCABQ ’13 Saturday, September 14, 13
Transcript
Page 1: There's a Filter For That

drewf.us/wcabq13

THERE’S A FILTER FOR THATDrew Jaynes | WCABQ ’13

Saturday, September 14, 13

Page 2: There's a Filter For That

drewf.us/wcabq13

WHO I AM

Drew Jaynes

Web Engineer, 10up

Core Contributor

WordPress Docs Team

Saturday, September 14, 13

Page 3: There's a Filter For That

drewf.us/wcabq13

WHAT IS A FILTER?A filter is a function that:1. Takes a specific WordPress value2. (maybe) modifies it3. Then spits the resulting value back out

Saturday, September 14, 13

Page 4: There's a Filter For That

drewf.us/wcabq13

OK ... ?

Saturday, September 14, 13

Page 5: There's a Filter For That

drewf.us/wcabq13

apply_filters()

Saturday, September 14, 13

Page 6: There's a Filter For That

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

Saturday, September 14, 13

Page 7: There's a Filter For That

drewf.us/wcabq13

ADDING OR REMOVING FILTERSadd_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

Saturday, September 14, 13

Page 8: There's a Filter For That

drewf.us/wcabq13

ALL TOGETHER NOW// $value is filterableapply_filters( ‘hook_name’, $value, (optional) $args );

function callback( $value, $arg ) { // do stuff return $value;}add_filter( 'hook_name', 'callback', 10, 2 );

Saturday, September 14, 13

Page 9: There's a Filter For That

drewf.us/wcabq13

CONTENT

Saturday, September 14, 13

Page 10: There's a Filter For That

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

Saturday, September 14, 13

Page 11: There's a Filter For That

drewf.us/wcabq13

‘post_updated_messages’

Args:(array $messages)

– Not handled by WordPress out of the box– Use with custom post types– Customize ‘Post ppdated’, ‘Post deleted’, etc.

Filter post updated|published|trashed|etc messages.

Saturday, September 14, 13

Page 12: There's a Filter For That

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

Saturday, September 14, 13

Page 13: There's a Filter For That

drewf.us/wcabq13

WORKFLOW

Saturday, September 14, 13

Page 14: There's a Filter For That

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)

Saturday, September 14, 13

Page 15: There's a Filter For That

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

Saturday, September 14, 13

Page 16: There's a Filter For That

drewf.us/wcabq13

‘custom_menu_order’

// enable custom menu orderadd_filter( ‘custom_menu_order’, __return_true’ );

Saturday, September 14, 13

Page 17: There's a Filter For That

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’ );

Saturday, September 14, 13

Page 18: There's a Filter For That

drewf.us/wcabq13

‘default_hidden_meta_boxes’

Args:(array $hidden, WP_Screen $screen)

– Standardize UX for all users– Doesn’t prevent future user changes

Filter meta boxes hidden by default contextually

Saturday, September 14, 13

Page 19: There's a Filter For That

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

Saturday, September 14, 13

Page 20: There's a Filter For That

drewf.us/wcabq13

FRONT-END

Saturday, September 14, 13

Page 21: There's a Filter For That

drewf.us/wcabq13

‘the_content’

(string $content)

– Used an abused often– Litmus test: is it content?

Filter the post content

Saturday, September 14, 13

Page 22: There's a Filter For That

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

Saturday, September 14, 13

Page 23: There's a Filter For That

drewf.us/wcabq13

‘excerpt_length’

Args:(int $number)

– Commonly filtered by themes, defualt is 55 characters

Filter the length (in characters) of the excerpt

Saturday, September 14, 13

Page 24: There's a Filter For That

drewf.us/wcabq13

‘show_admin_bar’

(bool true)

// Disable Toolbaradd_filter( ‘show_admin_bar’, ‘__return_false’ );

Show/hide the Toolbar on the front-end

Saturday, September 14, 13

Page 25: There's a Filter For That

drewf.us/wcabq13

‘disable_captions’

(bool false)

// Disable captionsadd_filter( ‘disable_captions’, ‘__return_true’ );

Disable/enable image captions

Saturday, September 14, 13

Page 26: There's a Filter For That

drewf.us/wcabq13

DEVELOPMENT

Saturday, September 14, 13

Page 27: There's a Filter For That

drewf.us/wcabq13

‘plugins|themes_api_*’

– Different result object, arguments, or complete overhaulFilter plugin or theme installer pages

‘plugins|themes_api_args’

‘plugins|themes_api’

‘plugins|themes_api_result’

Saturday, September 14, 13

Page 28: There's a Filter For That

drewf.us/wcabq13

‘enable_post_by_email_configuration’

Args:(bool false)

// disable post by emailadd_filter( ‘enable_post_by_email_configuration’, ‘__return_false’);

Enable/disable Post by Email

Saturday, September 14, 13

Page 29: There's a Filter For That

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

Saturday, September 14, 13

Page 30: There's a Filter For That

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

Saturday, September 14, 13

Page 31: There's a Filter For That

drewf.us/wcabq13

QUESTIONS?

Saturday, September 14, 13


Recommended