Getting Started With WordPress Development

Preview:

DESCRIPTION

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

Citation preview

Intro To WordPress Development

Kenny Younger (@kenny)&

Andy Brudtkuhl (@abrudtkuhl)

What does WordPress look like to the users?

Let’s take a look!

Database

Database Schema

Source: SchemaBank.com

File Structure

• /– 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

wp-config.php

define('WP_ALLOW_MULTISITE', true);

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/

WordPress Themes

What are themes? A way to skin WordPress

What’s In A WordPress Theme?

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

• Requirements:• HTML• CSS• Some PHP

Anatomy Of A WordPress Theme

Theme Structure

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

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

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…

Functions.php

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

The Loop

If (havePosts)show post stuff

Elsenothing here!

End if

Template Tags

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

Theme Frameworks

What Is A WordPress Plugin?

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

The Plugin Directory

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

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

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

Admin Menus

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

• Adds options in WordPress Admin Dashboard

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

Custom FieldsAllow attaching meta-data to posts.

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

Custom Post Types

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

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

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; ?>

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' )

) );

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

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

August 7th, Downtown Des Moines Public Library

Thanks!!!

Kenny Younger (@kenny)&

Andy Brudtkuhl (@abrudtkuhl)

Recommended