The Struggle is Real: Developing WordPress Plugins Daniel Simanek - - PowerPoint PPT Presentation
The Struggle is Real: Developing WordPress Plugins Daniel Simanek - - PowerPoint PPT Presentation
The Struggle is Real: Developing WordPress Plugins Daniel Simanek <daniel.simanek@wisc.edu> Research and Graduate Education Throwing Things Classes Filter all the Things No Magic Code like everyone Is Stupid Break the (WordPress)
Classes Throwing Things
No Magic Filter all the Things
Break the (WordPress) Glass Code like everyone Is Stupid
Draft Pending Published Vanilla WordPress Workflow
Draft Pending Published Hot Swap Workflow Draft Pending
Parent Child
Object Classes
lunchbox->num_grapes = 4;
lunchbox->num_grapes = 4; The programming 101 idea of objects ...
black_box->get_child();
??
Fewer function parameters Less to remember
Function scoping
plugin_function_prefix_function_name() plugin_function_prefix_foo() plugin_function_prefix_bar() plugin_function_prefix_foo_bar() plugin_function_prefix_example() plugin_function_prefix_test() plugin_function_prefix_do_something() plugin_function_prefix_my_amazing_function()
Function scoping
$this->function_name() OR Class_Name::function_name()
Order And Structure
Readability And Maintainability
PHP Kinda Sucks ...
PHP Kinda Sucks ...
http://phpsadness.com/
Return Value?
What is FALSE as an INT?
Don’t be like PHP ...
and pass errors in return values ...
Throw Exceptions! and pass errors in return values ...
What does PHP do if I don’t check for errors?
PHP keeps going, no matter what ...
Death by exception
Use Constants
… and not Magic Numbers
What are Magic Numbers?
What are Magic Numbers?
if( $x == 32 ) for( range( 1, 52 ) as $card ) if( $x == ‘supercalifragilisticexpialidocious’ )
Why are Magic Numbers bad?
if( $x == 32 ) for( range( 1, 52 ) as $card ) if( $x == ‘supercalifragilisticexpialidocious’ )
Why are Magic Numbers bad?
if( $x == $freezing_point ) for( range( 1, $deck_size ) as $card ) if( $x == $song_name )
Magic Numbers, WordPress Style
$cat_id = 7; $user_id = 64; $post_id = 527;
Two versions of Constants
Global Class
BYO Filters
apply_filters( ‘name_of_my_filter’, $value_to_be_filtered ); e.g. apply_filters( ‘hot_swap/use_cloning’, $cloning_enabled );
Using apply_filters()
hot_swap/use_cloning
Naming Filters
my_awesome_plugin/options/save hot_pocket/remove_from_microwave search_plugin/results hot_swap/excluded_post_types
Only call apply_filters() once per filter
Break out of WordPress
Code like everyone is stupid
Code like everyone is stupid
Objects/classes
Code like everyone is stupid
Objects/classes Throwing exceptions
Code like everyone is stupid
Objects/classes Throwing exceptions Constants