1. Welcome
CUSTOMIZING THE CUSTOM LOOP
Code: http://github.com/jmarx/Wordcamp-NYC-2012
2. Meet the guys
Alexander Sapountzis Jeff Marx
• Worked with • Worked with
WordPress for 2 WordPress for 7 years
Years • Worked a Gannet
• Worked at Bloomberg Newspapers
Businessweek • Snappy Dresser
• He's the one with the
beard
3. What is CBS Local?
Network of local sites for news and media,
consolidating CBS' media content
• Radio
• TV
• News
• Original Content
www.cbslocal.com
5. 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!
6. What comes next?
• Featured Posts
• Category Boxes
• Cool stuff
• Not boring!
7. How do we do this?
(PAY ATTENTION, THIS WILL BE ON THE
TEST)
8. The Global Query
• Runs once on every page
• Returns all relevant posts based on params
o Home Page Query returns all posts
o Category Page Query returns all for that category
o Single Post Page Query returns a single, lonely post
• Global query feeds default loop
o default loop is hard coded on theme template files and
contains post information from the global query
• This comes built into WordPress
9. 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
10. Introduce The Loops
• query_posts()
• WP_Query
• get_posts()
Each is used in different ways, but you really only
need one; WP_Query
11. 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
12. 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
13. 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!
14. 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
16. Performance Gotchas
• Use caching and transients to improve performance
• Limits load by minimizing database calls
• Don't need too many loops on your site