Customizing the custom loop wordcamp 2012

Preview:

DESCRIPTION

Using WP_Query to create a custom theme

Citation preview

Customizing the Custom Loop

Welcome

Code: http://github.com/jmarx/Wordcamp-NYC-2012

Meet the guys

Alexander Sapountzis

• Worked with WordPress for 2 Years

• Worked at Bloomberg Businessweek

• He's the one with the beard

Jeff Marx

• Worked with WordPress for 7 years

• Worked a Gannet Newspapers

• Snappy Dresser

What is CBS Local?

Network of local sites for news and media, consolidating CBS' media content

• Radio

• TV

• News

• Original Content

www.cbslocal.com

We use WordPress!

After the five-minute install

• You get a cool theme

• Single Column

• Sidebar

• ...but it's boring

We need to customize this so it's cool!

What comes next?

• Featured Posts

• Category Boxes

• Cool stuff

• Not boring!

(pay attention, this will be on the test)

How do we do this?

The Global Query

• Runs once on every page

• Returns all relevant posts based on paramso Home Page Query returns all postso Category Page Query returns all for that categoryo Single Post Page Query returns a single, lonely

post

• Global query feeds default loopo default loop is hard coded on theme template files

and contains post information from the global query

• This comes built into WordPress

WordPress does all this for free

...what's the problem? Why bother with custom loops?

Because you may need to:

• Categorize content

• use Custom Post Types

• not have a boring site

Introduce The Loops

• query_posts()

• WP_Query

• get_posts()

Each is used in different ways, but you really only need one; WP_Query

query_posts()

• Modifies the Global Query (that's bad)

• Can cause unpredictable behavior

• Will very likely be removed from WordPress (we hope soon)

• Ignore tutorials that use this

Remember: using query_posts() is like trying to hammer a nail in with your forehead; painful and messy

get_posts()

• Safer but not ideal

• Limited - Not as powerful or useful

• Some template tags are not included

This is like the little brother of WP_Query. It uses WP_Query behind the scenes, but hides quite a bit from you

WP_Query

• Returns everything you need

• Template tags will work

• Plays nice with the Global Query

• High in fiber

query_posts() and get_posts() actually use this internally, but do other things that you don't want. Cut out the middle man!

Standard Loop

Examples of the standard loop (before we make it all fancy)

https://github.com/jmarx/Wordcamp-NYC-2012/blob/master/twentyten_jeff/standard-loop.php

Custom Loop Examples

Homepage:https://github.com/jmarx/Wordcamp-NYC-2012/blob/master/twentyten_jeff/loop-index.php

Sidebar:https://github.com/jmarx/Wordcamp-NYC-2012/blob/master/twentyten_jeff/sidebar.php

Pagehttps://github.com/jmarx/Wordcamp-NYC-2012/blob/master/twentyten_jeff/page_dc.php

Performance Gotchas

• Use caching and transients to improve performance

• Limits load by minimizing database calls

• Don't need too many loops on your site

Got Questions?

@jeffreymarx@asapountzis

Code Samples:https://github.com/jmarx/Wordcamp-NYC-

2012