34
Intro To WordPress Development Kenny Younger (@kenny) & Andy Brudtkuhl (@abrudtkuhl)

Getting Started With WordPress Development

Embed Size (px)

DESCRIPTION

A presentation from Iowa Code Camp 2010 by Kenny Younger (@kenny) and Andy Brudtkuhl (@abrudtkuhl)

Citation preview

Page 1: Getting Started With WordPress Development

Intro To WordPress Development

Kenny Younger (@kenny)&

Andy Brudtkuhl (@abrudtkuhl)

Page 2: Getting Started With WordPress Development

What does WordPress look like to the users?

Let’s take a look!

Page 3: Getting Started With WordPress Development

Database

Page 4: Getting Started With WordPress Development

Database Schema

Source: SchemaBank.com

Page 5: Getting Started With WordPress Development

File Structure

Page 6: Getting Started With WordPress Development

• /– wp-admin/– wp-content/• plugins/

– Each plugin usually has its own directory

• themes/– Each theme has its own directory

• uploads/– Created on first upload (default location)

– wp-includes/– wp-config.php

Page 7: Getting Started With WordPress Development

wp-config.php

define('WP_ALLOW_MULTISITE', true);

Page 8: Getting Started With WordPress Development

Debugging made easy

define( 'SCRIPT_DEBUG', true );

Debugging flags added to wp-config.php:define( 'WP_DEBUG', true );

define( 'SAVEQUERIES', true ); $wpdb->queries

“All” hook:add_action( 'all', create_function( '', 'var_dump( current_filter() );' ) );

Core Control Plugin: http://wordpress.org/extend/plugins/core-control/

Dump Environment Plugin:http://wordpress.org/extend/plugins/dump_env/

Source: http://www.andrewnacin.com/2010/04/23/5-ways-to-debug-wordpress/

Page 9: Getting Started With WordPress Development

WordPress Themes

What are themes? A way to skin WordPress

Page 10: Getting Started With WordPress Development

What’s In A WordPress Theme?

• WordPress themes are a combination of PHP, CSS, and image files

• Requirements:• HTML• CSS• Some PHP

Page 11: Getting Started With WordPress Development

Anatomy Of A WordPress Theme

Page 12: Getting Started With WordPress Development

Theme Structure

• Index.php– includes header.php– Includes sidebar.php– Includes footer.php

Page 13: Getting Started With WordPress Development

Standard Theme Architecture

• Homepage– index.php– home.php

• Single Post– single.php

• Page– page.php

• Category– category.php– archive.php

• Tags– tag.php

• Search Results– search.php

• 404– 404.php

Page 14: Getting Started With WordPress Development
Page 15: Getting Started With WordPress Development

The Stylesheet – style.css

The comment headers in the style.css provide meta info to WP are are REQUIRED

This stylesheet also controls the layout and design elements of your theme…

Page 16: Getting Started With WordPress Development

Functions.php

Contains theme related functions and commonly is used to generate dynamic sidebars

Page 17: Getting Started With WordPress Development

The Loop

If (havePosts)show post stuff

Elsenothing here!

End if

Page 18: Getting Started With WordPress Development

Template Tags

• the_title()• the_permalink()• the_content()• the_excerpt()• And more!

Page 19: Getting Started With WordPress Development

Theme Frameworks

Page 20: Getting Started With WordPress Development

What Is A WordPress Plugin?

Plugins are used to add or enhance functionalities of your WordPress site

Page 21: Getting Started With WordPress Development

The Plugin Directory

http://wordpress.org/extend/plugins/

Page 22: Getting Started With WordPress Development

The Plugin API

• The API provides “Hooks” into WordPress• No more hacking the core• Made up of Actions and Filters• Actions = functions triggered by events

ie: Call function on user log in• Filters = functions that modify information

ie: Add facebook share button before post

Page 23: Getting Started With WordPress Development

Plugin Data

Sometimes it’s necessary to store data…

For large amounts, create a new database table

For small amounts, use WordPress “Options” – a table with key/value pairs

Page 24: Getting Started With WordPress Development

Admin Menus

• Custom option panels for users to update settings for your plugin

• Adds options in WordPress Admin Dashboard

Page 25: Getting Started With WordPress Development

Users & Roles & Capabilities

WordPress is designed to handle multiple users – from admin and editors to subscribers

5 Pre-Defined Roles• Administrator• Editor• Author• Contributor• Subscriber

http://codex.wordpress.org/Roles_and_Capabilities

Page 26: Getting Started With WordPress Development

Custom FieldsAllow attaching meta-data to posts.

http://www.smashingmagazine.com/2010/04/29/extend-wordpress-with-custom-fields/

Page 27: Getting Started With WordPress Development

Custom Post Types

• Used for:– Real Estate Listing– Event Calendar– Movie Database– Issue Management / Ticket System– Etc.

Page 28: Getting Started With WordPress Development

Custom Post Type Options• label• singular_label• description• public – query-able from public?• menu_position• menu_icon• hierarchical• query_var• capability_type – permissions• supports• rewrite• taxonomies• register_meta_box_cb• permalink_epmask

Page 29: Getting Started With WordPress Development

Custom Post Types – Integration with the loop

<?php $loop = new WP_Query( array( 'post_type' => my_custom_post_type', 'posts_per_page' => 10 ) ); ?>

<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>

<?php the_title( '<h2 class="entry-title"><a href="' . get_permalink() . '" title="' . the_title_attribute( 'echo=0' ) . '" rel="bookmark">', '</a></h2>' );

?><div class="entry-content">

<?php the_content(); ?></div>

<?php endwhile; ?>

Page 30: Getting Started With WordPress Development

Taxonomies• What are taxonomies?

• register_taxonomy()– Shows up in menu system– Demo

register_taxonomy( 'actor', 'post', array(

'hierarchical' => false, 'label' => __('Actors', 'series'), 'query_var' => 'actor', 'rewrite' => array( 'slug' => 'actors' )

) );

Page 31: Getting Started With WordPress Development

Core Development

• Versioning– 0.1 increments– Based on time, not features– Generally every 5-6 months– 0.0.1 – usually security fixes, other small bug fixes

• Always update!!

• Mailing lists: – http://codex.wordpress.org/Mailing_Lists

• Trac: – http://core.trac.wordpress.org

Page 32: Getting Started With WordPress Development

Resources

• Planet - planet.wordpress.org• WordPress Codex – codex.wordpress.org• WordPress Forums – wordpress.org/support• All Things WordPress- wordpress.alltop.com • Core Development Blog – devel.wordpress.org

Page 33: Getting Started With WordPress Development

August 7th, Downtown Des Moines Public Library

Page 34: Getting Started With WordPress Development

Thanks!!!

Kenny Younger (@kenny)&

Andy Brudtkuhl (@abrudtkuhl)