Top Banner
Chris Scott - @chrisscott - slideshare.net/iamzed photo from http://www.richardpettinger.com/funny/funny_road_signs/funny_road_signs YOU’RE DOING IT WRONG
35

You're Doing it Wrong - WordCamp Atlanta

Jan 27, 2015

Download

Technology

Chris Scott

Slides from my WordCamp Atlanta 2010 presentation "You're Doing it Wrong"
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: You're Doing it Wrong - WordCamp Atlanta

Chris Scott - @chrisscott - slideshare.net/iamzedphoto from http://www.richardpettinger.com/funny/funny_road_signs/funny_road_signs

YOU’RE DOING IT WRONG

Page 2: You're Doing it Wrong - WordCamp Atlanta

Thanks• Dion Hulse’s (DD32) two part series on doing it

wrong:• http://dd32.id.au/2009/11/01/youre-doing-it-wrong-1/• http://dd32.id.au/2009/11/01/youre-doing-it-wrong-2/• http://dd32.id.au/2009/11/24/how-to-do-it-right-part-0/

• Michael Pretty for ideas and telling me what I’m doing wrong• Sean O’Shaughnessy for ideas and graphics

Page 3: You're Doing it Wrong - WordCamp Atlanta

New Features in a Year:2.7 - 2.9.1

• Post thumbnails• Sticky posts• Comment threading and paging• Widgets API• Load scripts minified by default• Load scripts in the footer• esc_* functions• security fixes• and much more...

Page 5: You're Doing it Wrong - WordCamp Atlanta

Not Upgrading

WRONG

Page 6: You're Doing it Wrong - WordCamp Atlanta

Upgrading

RIGHT

Page 7: You're Doing it Wrong - WordCamp Atlanta

• Upgrade manually:http://codex.wordpress.org/Upgrading_WordPress

• Upgrade with SVN:http://codex.wordpress.org/Installing/Updating_WordPress_with_Subversion

• CTFB:

Resources

Page 8: You're Doing it Wrong - WordCamp Atlanta

Calling Functions That Don’t Exist

<div id="sidebar" role="complementary"> <ul> <li><?php wp_ozh_wsa('mybanner') ?></li>

... rest of sidebar ...

</ul></div>

WRONG

Page 9: You're Doing it Wrong - WordCamp Atlanta

Check for Functions Before Calling

<div id="sidebar" role="complementary"> <ul> <?php if (function_exists('wp_ozh_wsa')) : ?> <li><?php wp_ozh_wsa('mybanner') ?></li> <?php endif; ?> ... rest of sidebar ...

</ul></div>

RIGHT

Page 10: You're Doing it Wrong - WordCamp Atlanta

Hard-Coding WordPress Paths

$cb_path = get_bloginfo('wpurl')."/wp-content/plugins/wp-codebox"; //URL to the plugin directory

WRONG

Page 11: You're Doing it Wrong - WordCamp Atlanta

Use Constants or Helper Functions

$cb_path = plugins_url('', __FILE__); //URL to the plugin directory

RIGHT

Page 13: You're Doing it Wrong - WordCamp Atlanta

Echoing Scripts/CSS in Header/Footer

function codebox_header() { $hHead .= "<script language=\"javascript\" type=\"text/javascript\" src=\"".get_bloginfo('wpurl')."/wp-includes/js/jquery/jquery.js\"></script>\n"; $hHead .= "<script language=\"javascript\" type=\"text/javascript\" src=\"{$cb_path}/js/codebox.js\" ></script>\n"; print($hHead);}add_action('wp_head', 'codebox_header');

WRONG

Page 14: You're Doing it Wrong - WordCamp Atlanta

Enqueue Scripts and Styles

function codebox_header() { wp_enqueue_script( 'codebox', plugins_url('js/ codebox.js', __FILE__), array('jquery') );}add_action('template_redirect', 'codebox_header');

RIGHT

Page 15: You're Doing it Wrong - WordCamp Atlanta

Resources• wp_enqueue_script:

http://codex.wordpress.org/Function_Reference/wp_enqueue_script

• wp_enqueue_style:http://codex.wordpress.org/Function_Reference/wp_enqueue_style

• Enqueueing styles with conditionals:http://iamzed.com/using-wordpress-wp_enqueue_style-with-conditionals/

• Plugin API/Action Reference:http://codex.wordpress.org/Plugin_API/Action_Reference

Page 16: You're Doing it Wrong - WordCamp Atlanta

Not Checking Indices or Object Properties

if ($_GET['wp125action'] == "deactivate") { ...}

WRONG

Page 17: You're Doing it Wrong - WordCamp Atlanta

Checking Indices/Properties

if (isset($_GET['wp125action']) && $_GET['wp125action'] == "deactivate") { ...}

RIGHT

Page 18: You're Doing it Wrong - WordCamp Atlanta

Resources• isset():

http://php.net/isset

• empty():http://php.net/emtpy

Page 19: You're Doing it Wrong - WordCamp Atlanta

Not Using WP_DEBUG

WRONG

Page 20: You're Doing it Wrong - WordCamp Atlanta

Define WP_DEBUG in wp-config.php

RIGHT

define('WP_DEBUG', true);

Page 21: You're Doing it Wrong - WordCamp Atlanta

Resources• WP_DEBUG:

http://codex.wordpress.org/Editing_wp-config.php#Debug

• Use dev versions of WP scripts:define('SCRIPT_DEBUG', true);

• Disable admin js concatenation:define('CONCATENATE_SCRIPTS', false);

Page 22: You're Doing it Wrong - WordCamp Atlanta

Using Globals Instead of Template Tags

global $post;

$title =$post->post_title;

WRONG

Page 23: You're Doing it Wrong - WordCamp Atlanta

Use Template Tags

$title = get_the_title();

RIGHT

Page 24: You're Doing it Wrong - WordCamp Atlanta

Resources• Template Tags:

http://codex.wordpress.org/Template_Tags

Page 25: You're Doing it Wrong - WordCamp Atlanta

Writing SQL

global $wpdb;

$wpdb->query("update ".$articles." set review = ". $rating." where post_id = ".$post_id);

WRONG

Page 26: You're Doing it Wrong - WordCamp Atlanta

Use $wpdb Methods

global $wpdb;

$wpdb->update( $articles, array('review' => $rating), compact('post_id'));

RIGHT

Page 28: You're Doing it Wrong - WordCamp Atlanta

Not Validating/Escaping User Input

<label for="title"><?php echo get_option('my_plugin_option_title'); ?></label>

<input type="text" id="value" name="value" value="<?php echo get_option('my_plugin_option_value')); ?>">

WRONG

Page 29: You're Doing it Wrong - WordCamp Atlanta

Validate and Escape User Input

<label for="title"><?php echo esc_html(get_option('my_plugin_option_title')); ?></label>

<input type="text" id="value" name="value" value="<?php echo esc_attr(get_option('my_plugin_option_value')); ?>">

RIGHT

Page 31: You're Doing it Wrong - WordCamp Atlanta

Not Using Caching

$response = wp_remote_get($url);if (!is_wp_error($response) && $response['response']['code'] == '200') { $data = $response['body'];}... do something with data ...

WRONG

Page 32: You're Doing it Wrong - WordCamp Atlanta

Use Caching

if (!$data = wp_cache_get('my_external_data')) { $response = wp_remote_get($url); if (!is_wp_error($response) && $response['response']['code'] == '200') { $data = $response['body']; wp_cache_set('my_external_data', $data); }}... do something with data ...

RIGHT

Page 33: You're Doing it Wrong - WordCamp Atlanta

Resources• WP_Cache:

http://codex.wordpress.org/Function_Reference/WP_Cache

Page 34: You're Doing it Wrong - WordCamp Atlanta

Not Contributing

WRONG

photo by TaranRampersad http://www.flickr.com/photos/knowprose/2294744043/

Page 35: You're Doing it Wrong - WordCamp Atlanta

Contributing

RIGHT

http://codex.wordpress.org/Contributing_to_WordPress

• Edit the Codex• Answer Forum Support Questions• Participate in Development• Planning, Testing, Bug Reporting and Fixing• Say “Thanks”