Top Banner
drewf.us/wcabq13 THERE’S A FILTER FOR THAT Drew Jaynes | WCABQ ’13 Saturday, September 14, 13
31

There's a Filter For That

May 06, 2015

Download

Self Improvement

DrewAPicture

Presented at WordCamp Albuquerque, Sept. 14, 2013.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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