Download - Cowboy Coding to Professional Developer
From Cowboy Coding to Professional Developer
Andy Brudtkuhl @abrudtkuhl
YouMetAndy.com/wckc
What Is Cowboy Coding?… and why it is a necessary evil
TL;DRDon’t code live on your production server. Use version control.
Be nice, use standards, and avoid shiny object syndrome.
What makes a better developer?
Be pragmatic.
Be empathetic. (this is not easy)
Use standards. (please)
Tools Don’t Matter. Tools Mean Everything
Be a good teammate.
Avoid Shiny Objects
Be verbose. (comment your code, describe your commits)
Automate your busy work.
Test your software (because someone else will)
Don’t Repeat Yourself.
Setup a local dev environment.
Local Dev Environment
• MAMP Pro
• Desktop Server
• VVV
Use version control.
What goes in Git?
• Entire Site
• Single Plugins and Themes
• Never commit your wp-config.php file
• Google “Git Ignore WordPress” for an example .gitignore file
Sync your data.
WP DB Migrate Pro
• Use WP DB Migrate Pro
• Migrate Data
• Push / Pull Sync Data
• Use WP_CLI addon to automate
Deploy with sanity.
Deploy with sanity• Dev / Test / Production environments
• Stop doing things manually
• Use WP-DB-MIGRATE to move data
• Use WP-Pusher to deploy updates (no FTP, yay!)
• Use Git on your server
• Capistrano or Chef
Being A Better WordPress Developer
Tips and tools to be a better WordPress developer
define( 'WP_DEBUG', true );
Separate Concerns
• Use Plugins for functionality and Themes for design
• Don’t abuse functions.php
• Use functionality plugins
the loop.
Follow WordPress Standards
• Read the Codex
• Follow WordPress developer standards for Themes, Plugins, and Core Contribution
Use Core Features• Theme Customizer
• Settings API
• Options API
• Image Thumbnails
• Menu System
• Widgets, Shortcodes
• Custom Post Types & Taxonomies
Enqueue All The Things
• Include scripts and stylesheets in Themes and Plugins by enqueuing them
• NEVER include your own version of jQuery
Use Template Parts
• Create reusable template parts
• Build reusable loops
• Reduce and Reuse code
Validate, Sanitize, Escape
• Validate = check user input
• Sanitize = clean user input
• Escape = securing user generated output
Transients FTW
• Simple Caching
• Big Performance
• Store data you expect to expire
Use Starter Templates
• WordPress Plugin Boilerplate
• Theme templates like sage, roots, _s
• GenerateWP.com
Know variable scope
• Don’t define your own Globals
• Use namespaces and classes to properly scope your variables
WP-CLI
• A WordPress command line interface
• Setup, install, configure sites from your terminal
• Easily create scripts to spin up new sites
• Automate Database migrations
• Schedule Database Migrations
Manage Dependencies
• Use plugin_exists( ‘my-plugin’ ), class_exists( ‘MyClass’ ), or function_exists( ‘my_awesome_function’ )
• TGM Plugin Activation
• Require / Recommend dependencies in your custom themes and plugins
• Use composer
• custom plugin or theme with third party dependencies
My Workflow1. Grab a task (Jira or Trello)
2. Pull latest version of project from Bitbucket
3. Pull latest version of data from Staging / Production
4. Code feature / fix bug
5. Commit and push updated code with comment and link back to ticket in Jira/Trello
6. Deploy with WP Pusher or Git
My Tools• Editor: Atom.io
• Local Dev: MAMP Pro
• Terminal: iTerm
• Source Control: Git with Bitbucket
• Data Management: WP DB Migrate Pro
• Deployment: WP Pusher
• Site Management: InfiniteWP
YouMetAndy.com/wckc @abrudtkuhl