You are previewing WordPress® Bible, Second Edition.
O'Reilly logo
WordPress® Bible, Second Edition

Book Description

Get the latest word on the biggest self-hosted blogging tool on the market.

Within a week of the announcement of WordPress 3.0, it had been downloaded over a million times. Now you can get on the bandwagon of this popular open-source blogging tool with WordPress Bible, 2nd Edition. Whether you're a casual blogger or programming pro, this comprehensive guide covers the latest version of WordPress, from the basics through advanced application development. If you want to thoroughly learn WordPress, this is the book you need to succeed.

  • Explores the principles of blogging, marketing, and social media interaction

  • Shows you how to install and maintain WordPress

  • Thoroughly covers WordPress basics, then ramps up to advanced topics

  • Guides you through best security practices as both a user and a developer

  • Helps you enhance your blog's findability in major search engines and create customizable and dynamic themes

  • Author maintains a high-profile blog in the WordPress community, Technosailor.com

  • Tech edited by Mark Jaquith, one of the lead developers of WordPress

The WordPress Bible is the only resource you need to learn WordPress from beginning to end.

Table of Contents

  1. Copyright
  2. About the Author
  3. Credits
  4. Foreword
  5. Preface
    1. WordPress Versioning
    2. Getting the Most out of This Book
    3. Using the Margin Icons
  6. Acknowledgments
  7. I. Getting Started with WordPress
    1. 1. Learning About WordPress
      1. 1.1. A Brief History of WordPress
        1. 1.1.1. The creation of WordPress
        2. 1.1.2. The WordPress ecosystem emerges
        3. 1.1.3. The future of WordPress
      2. 1.2. Leveraging the WordPress Community
        1. 1.2.1. Support
          1. 1.2.1.1. Support forums
          2. 1.2.1.2. The WordPress Codex
          3. 1.2.1.3. IRC
        2. 1.2.2. Development
          1. 1.2.2.1. Hackers mailing list
          2. 1.2.2.2. Testers mailing list
          3. 1.2.2.3. Trac
      3. 1.3. WordPress by the Numbers
      4. 1.4. Ten Things You Need to Know About WordPress
        1. 1.4.1. Generate content with an offline editor
        2. 1.4.2. Benefit from built-in SEO features
        3. 1.4.3. Widgetize your blog for a unique experience
        4. 1.4.4. Install themes, plugins, and core upgrades automatically
        5. 1.4.5. Turn your blog into a social network
        6. 1.4.6. Extend WordPress with plugins
        7. 1.4.7. Provide context with the WordPress taxonomies
        8. 1.4.8. Import your blog from any platform
        9. 1.4.9. Take advantage of multiple feeds
        10. 1.4.10. Make WordPress a full-fledged CMS with custom post types
        11. 1.4.11. Generate navigation menus on the fly with no coding required
      5. 1.5. Understanding Open Source and the General Public License
      6. 1.6. Summary
    2. 2. Installing and Configuring WordPress
      1. 2.1. System Requirements
      2. 2.2. Choosing a Web Server
        1. 2.2.1. Apache
        2. 2.2.2. Lighttpd
        3. 2.2.3. Nginx
        4. 2.2.4. Internet Information Services
        5. 2.2.5. Optional modules
          1. 2.2.5.1. Apache mod_rewrite
          2. 2.2.5.2. eAccelerator for PHP
          3. 2.2.5.3. APC for PHP
          4. 2.2.5.4. SSH2 module for PHP
          5. 2.2.5.5. FTP for PHP
      3. 2.3. Installing WordPress
        1. 2.3.1. Configuring the database
        2. 2.3.2. Uploading your files
      4. 2.4. Summary
    3. 3. WordPress, SEO, and Social Media Marketing
      1. 3.1. Understanding the Basics of Search Engine Optimization
        1. 3.1.1. Canonical URLs
          1. 3.1.1.1. Google searches
          2. 3.1.1.2. Google Webmaster Tools
          3. 3.1.1.3. Steps for setting up proper canonical URL redirection
        2. 3.1.2. The Meta tag boost
          1. 3.1.2.1. Meta keywords tag
          2. 3.1.2.2. Meta description tag
          3. 3.1.2.3. Title tag
        3. 3.1.3. The All in One SEO plugin
          1. 3.1.3.1. Home Title
          2. 3.1.3.2. Home Description
          3. 3.1.3.3. Home Keywords
          4. 3.1.3.4. Canonical URLs
          5. 3.1.3.5. Rewrite Titles
          6. 3.1.3.6. Title Formats
          7. 3.1.3.7. Use Categories for META Keywords
          8. 3.1.3.8. Dynamically Generate Keywords for Posts Page
          9. 3.1.3.9. Noindex Options
          10. 3.1.3.10. Autogenerate Descriptions
          11. 3.1.3.11. Additional Headers
      2. 3.2. Leveraging Social Networks to Extend Your Blog
        1. 3.2.1. Facebook
          1. 3.2.1.1. Facebook Photos for WordPress
          2. 3.2.1.2. WP-FacebookConnect
          3. 3.2.1.3. Facebook Like Button
        2. 3.2.2. Twitter
          1. 3.2.2.1. Twitter Tools
          2. 3.2.2.2. TweetMeme
          3. 3.2.2.3. Twitter Widget Pro
      3. 3.3. Summary
    4. 4. Finding Help in the WordPress Support System
      1. 4.1. Using the WordPress Codex
      2. 4.2. Staying in the Loop with Mailing Lists
        1. 4.2.1. wp-hackers
        2. 4.2.2. wp-testers
        3. 4.2.3. wp-docs
        4. 4.2.4. wp-xmlrpc
        5. 4.2.5. wp-polyglots
        6. 4.2.6. wp-svn
        7. 4.2.7. wp-trac
      3. 4.3. Finding Help in the WordPress Support Forums
        1. 4.3.1. Understanding the support forum layout
          1. 4.3.1.1. Installation
          2. 4.3.1.2. How To and Troubleshooting
          3. 4.3.1.3. Themes and Templates
          4. 4.3.1.4. Plugins and Hacks
          5. 4.3.1.5. WP-Advanced
          6. 4.3.1.6. Multisite
          7. 4.3.1.7. Your WordPress
          8. 4.3.1.8. Miscellaneous
          9. 4.3.1.9. Requests and Feedback
          10. 4.3.1.10. Alpha/Beta
        2. 4.3.2. Posting in the support forums
      4. 4.4. Using IRC to Find Help
        1. 4.4.1. Quick Start for IRC
        2. 4.4.2. The WordPress IRC Rooms
      5. 4.5. Summary
  8. II. Working with Plugins
    1. 5. Extending WordPress with Plugins
      1. 5.1. Understanding WordPress Hooks
        1. 5.1.1. The anatomy of a hook
        2. 5.1.2. Theme hooks
      2. 5.2. Writing Your Own Plugin
      3. 5.3. Extending the WordPress Admin
        1. 5.3.1. Creating an admin interface
        2. 5.3.2. Adding an admin panel to the WordPress Admin navigation menu
        3. 5.3.3. Creating unique nonces for plugin form security
        4. 5.3.4. Processing data and interacting with the database
        5. 5.3.5. Loading JavaScript libraries
          1. 5.3.5.1. Preparing JavaScript with wp_enqueue_script()
        6. 5.3.6. Creating new Dashboard widgets
      4. 5.4. Creating Events with Actions
      5. 5.5. Modifying Content with Filters
      6. 5.6. Using Multi-Argument Hooks
      7. 5.7. Working with Custom Post Types
        1. 5.7.1. Making WordPress a full-fledge CMS
          1. 5.7.1.1. Using register_post_type()
          2. 5.7.1.2. Massaging custom post type functionality
        2. 5.7.2. Applying Custom Taxonomies
      8. 5.8. Localizing Plugins
        1. 5.8.1. Enabling plugin code for translation
        2. 5.8.2. Providing a textdomain for the plugin
        3. 5.8.3. Generating a POT file for translators
      9. 5.9. Summary
    2. 6. Building Widgets and Navigation Menus
      1. 6.1. Using Widgets in WordPress
      2. 6.2. Building Widgets with the Widget API
        1. 6.2.1. Building a new widget plugin
        2. 6.2.2. Creating a control interface for the plugin
        3. 6.2.3. Saving configuration data
        4. 6.2.4. Putting it all together
        5. 6.2.5. Replacing existing widgets
      3. 6.3. Widgetizing Your Theme
        1. 6.3.1. Declaring sidebars
        2. 6.3.2. Integrating widgetized sidebars in themes
      4. 6.4. Building WordPress Navigation Menus
        1. 6.4.1. Exploring the navigation menu interface
        2. 6.4.2. Enabling a theme to use navigation menus
        3. 6.4.3. Registering navigation menu locations in a theme
      5. 6.5. Summary
    3. 7. Understanding the WordPress Database Class
      1. 7.1. Examining the Schema and Properties of the Database Class
        1. 7.1.1. The database properties
          1. 7.1.1.1. show_errors
          2. 7.1.1.2. suppress_errors
          3. 7.1.1.3. last_error
          4. 7.1.1.4. num_queries
          5. 7.1.1.5. last_query
          6. 7.1.1.6. col_info
          7. 7.1.1.7. queries
          8. 7.1.1.8. prefix
          9. 7.1.1.9. ready
          10. 7.1.1.10. blogid
          11. 7.1.1.11. siteid
          12. 7.1.1.12. global_tables
          13. 7.1.1.13. ms_global_tables
          14. 7.1.1.14. posts
          15. 7.1.1.15. postmeta
          16. 7.1.1.16. users
          17. 7.1.1.17. usermeta
          18. 7.1.1.18. comments
          19. 7.1.1.19. commentmeta
          20. 7.1.1.20. links
          21. 7.1.1.21. options
          22. 7.1.1.22. terms
          23. 7.1.1.23. term_taxonomy
          24. 7.1.1.24. term_relationships
          25. 7.1.1.25. blog_versions
          26. 7.1.1.26. registration_log
          27. 7.1.1.27. signups
          28. 7.1.1.28. site
          29. 7.1.1.29. sitemeta
          30. 7.1.1.30. tables
          31. 7.1.1.31. field_types
          32. 7.1.1.32. charset
          33. 7.1.1.33. collate
          34. 7.1.1.34. real_escape
      2. 7.2. Adding Data to MySQL with WordPress
        1. 7.2.1. Inserting new data into MySQL
        2. 7.2.2. Updating data in MySQL safely
      3. 7.3. Retrieving Data from MySQL with WordPress
        1. 7.3.1. Retrieving a single value from a table
        2. 7.3.2. Retrieving a column of data
        3. 7.3.3. Retrieving a row of data
        4. 7.3.4. Retrieving a full data set
        5. 7.3.5. Performing other queries
      4. 7.4. Preventing SQL Injection
      5. 7.5. Summary
    4. 8. Dissecting the Loop and WP_Query
      1. 8.1. Defining the Loop
      2. 8.2. Wrangling the Loop with Plugins
        1. 8.2.1. Discovering query hooks
        2. 8.2.2. Altering the query with hooks
      3. 8.3. Developing Custom and Multiple Loops
        1. 8.3.1. Using query_posts() and rewind_posts()
        2. 8.3.2. Instantiating a new Loop with WP_Query
        3. 8.3.3. Using variables to alter the query
        4. 8.3.4. Examples of WP_Query in action
          1. 8.3.4.1. Featured stories
          2. 8.3.4.2. Future posts
          3. 8.3.4.3. Display only sticky posts
      4. 8.4. Analyzing the Twenty-Ten Loop
        1. 8.4.1. Child theming Twenty-Ten
        2. 8.4.2. Leveraging get_template_part()
      5. 8.5. Using Loops Strategically
      6. 8.6. Summary
  9. III. Working with Themes and Template Tags
    1. 9. Using Free or Premium Themes
      1. 9.1. Understanding the User Experience
        1. 9.1.1. Typography
        2. 9.1.2. White space
        3. 9.1.3. Fixed or fluid width
        4. 9.1.4. Sidebars
      2. 9.2. Finding and Implementing Free Themes
      3. 9.3. Finding and Implementing Premium Themes
      4. 9.4. Exploring Free Theme Frameworks
        1. 9.4.1. Twenty-ten theme
        2. 9.4.2. Thematic framework
      5. 9.5. Comparing Premium Theme Frameworks
        1. 9.5.1. Builder Theme
        2. 9.5.2. Genesis Theme Framework
      6. 9.6. Summary
    2. 10. Understanding the Template File Hierarchy
      1. 10.1. Looking at the Minimum Necessary Template Files
        1. 10.1.1. style.css
        2. 10.1.2. index.php
      2. 10.2. Understanding the Common Template Files
        1. 10.2.1. header.php
        2. 10.2.2. footer.php
        3. 10.2.3. sidebar.php
        4. 10.2.4. comments.php
        5. 10.2.5. single.php
        6. 10.2.6. archive.php
        7. 10.2.7. page.php
        8. 10.2.8. search.php
        9. 10.2.9. loop.php
        10. 10.2.10. functions.php
        11. 10.2.11. screenshot.png
      3. 10.3. Enhancing the User Experience with Template Files
        1. 10.3.1. attachment.php
        2. 10.3.2. image.php, video.php, audio.php, and application.php
        3. 10.3.3. author.php
        4. 10.3.4. loop-{type}.php
        5. 10.3.5. tag.php
        6. 10.3.6. tag-{slug}.php
        7. 10.3.7. category.php
        8. 10.3.8. category-{x}.php
        9. 10.3.9. date.php
        10. 10.3.10. year.php, month.php, day.php
        11. 10.3.11. home.php
        12. 10.3.12. 404.php
      4. 10.4. Developing Custom Template Files
      5. 10.5. Taking Advantage of WordPress Theme Features
        1. 10.5.1. Post Thumbnails
        2. 10.5.2. Navigation Menus
        3. 10.5.3. Automatic Feed URLs
        4. 10.5.4. Custom Backgrounds
        5. 10.5.5. Custom Headers
      6. 10.6. Summary
    3. 11. Adding JavaScript and CSS to Themes
      1. 11.1. Examining the jQuery and Prototype Frameworks
        1. 11.1.1. jQuery
        2. 11.1.2. Prototype
        3. 11.1.3. Comparing the frameworks
      2. 11.2. Leveraging WordPress' JavaScript Libraries
        1. 11.2.1. Prototype: script.aculo.us
        2. 11.2.2. Prototype: TinyMCE
        3. 11.2.3. jQuery: Autosave
        4. 11.2.4. jQuery: hoverIntent
        5. 11.2.5. jQuery: Farbtastic
        6. 11.2.6. jQuery: jQueryUI
      3. 11.3. Examining WordPress Plugins that Use JavaScript Effects
        1. 11.3.1. jQuery Reply to Comment
        2. 11.3.2. Social Bookmarks
        3. 11.3.3. WP Conditional Digg This Badge
        4. 11.3.4. WPTouch iPhone Theme
      4. 11.4. Looking at Theme Styles
        1. 11.4.1. Queuing styles
        2. 11.4.2. Using JavaScript to style elements
      5. 11.5. Summary
    4. 12. Dissecting the Comment Loop, Template Tags, and Theme Best Practices
      1. 12.1. Using Hooks in Themes
        1. 12.1.1. Common hooks
          1. 12.1.1.1. wp_head()
          2. 12.1.1.2. wp_footer()
          3. 12.1.1.3. comment_form
        2. 12.1.2. Additional hook suggestions
      2. 12.2. Implementing Scripts in Themes
      3. 12.3. Using Template Tags to Make Themes Dynamic
        1. 12.3.1. Using bloginfo() to access blog metadata
        2. 12.3.2. Modularizing themes with get_template_part()
        3. 12.3.3. Using template tags in the Loop
        4. 12.3.4. Using Loop template tags outside the Loop
      4. 12.4. Creating Conversations with Threaded Comments and Paged Comments
      5. 12.5. Personalizing the Reader Experience with Avatars
      6. 12.6. Summary
  10. IV. Creating Content
    1. 13. Navigating the Content Production Experience
      1. 13.1. Customizing Your Workspace
      2. 13.2. Leveraging the Elements of Content Creation
        1. 13.2.1. Using the title strategically
        2. 13.2.2. Designating an excerpt
        3. 13.2.3. Enhancing searchability of content
          1. 13.2.3.1. Adjust the title slug
          2. 13.2.3.2. Use "bold" font to enhance importance
          3. 13.2.3.3. Add descriptive text to videos and podcasts
          4. 13.2.3.4. Write well
        4. 13.2.4. Looking at categories and tags: What's the difference?
          1. 13.2.4.1. Search implications
          2. 13.2.4.2. Architectural implications
          3. 13.2.4.3. Managing categories
          4. 13.2.4.4. Managing tags
        5. 13.2.5. Publishing and scheduling posts
        6. 13.2.6. Using custom fields
      3. 13.3. Hacking Your Experience: Getting the Most Out of Writing
        1. 13.3.1. Using the visual text editor
        2. 13.3.2. Using Full Screen mode
        3. 13.3.3. Using the Press This bookmarklet
      4. 13.4. Summary
    2. 14. Using Offline Editors
      1. 14.1. What Is XML-RPC?
        1. 14.1.1. WordPress-supported remote protocols
          1. 14.1.1.1. Blogger API
          2. 14.1.1.2. MetaWeblog API
          3. 14.1.1.3. Movable Type API
          4. 14.1.1.4. WordPress XML-RPC API
        2. 14.1.2. The bundled XML-RPC library
        3. 14.1.3. AtomPub and the upcoming standard of remote management
      2. 14.2. Understanding XML-RPC Security Risks
      3. 14.3. Looking at Offline Blog Editors
        1. 14.3.1. Windows Live Writer (Windows)
        2. 14.3.2. BlogDesk (Windows)
        3. 14.3.3. MarsEdit (Mac)
        4. 14.3.4. Ecto (Mac)
        5. 14.3.5. Drivel (Linux)
        6. 14.3.6. ScribeFire (All)
      4. 14.4. Summary
  11. V. Keeping Up with the Joneses: Maintenance and Upgrades
    1. 15. Performing Automatic Upgrades
      1. 15.1. Meeting the Minimum Automatic Upgrade Requirements
      2. 15.2. Disabling the "Upgrade Nag"
      3. 15.3. Performing Automatic Upgrades
      4. 15.4. Using SSH for Automatic Upgrades
        1. 15.4.1. Using SSH with keys
        2. 15.4.2. Using constants to bypass credentials
      5. 15.5. Summary
    2. 16. Moving to WordPress and Backing It Up
      1. 16.1. Moving a Blog to WordPress
        1. 16.1.1. Blogger
        2. 16.1.2. Blogware
        3. 16.1.3. DotClear
        4. 16.1.4. LiveJournal
        5. 16.1.5. Movable Type and TypePad
        6. 16.1.6. WordPress
      2. 16.2. Importing Tags into WordPress
        1. 16.2.1. Converting categories to tags
      3. 16.3. Looking at Backup Routines
        1. 16.3.1. File backups
        2. 16.3.2. MySQL backups
          1. 16.3.2.1. Using mysqldump
          2. 16.3.2.2. Using phpMyAdmin
        3. 16.3.3. Backup scripting
      4. 16.4. Summary
    3. 17. WordPress Maintenance and Security
      1. 17.1. Upgrading WordPress
        1. 17.1.1. Upgrading manually with FTP
        2. 17.1.2. Debugging problems with FTP upgrades
          1. 17.1.2.1. Re-upload files
          2. 17.1.2.2. Turning on Debugging in WordPress
          3. 17.1.2.3. Check the error log
          4. 17.1.2.4. Roll back to a previous version
      2. 17.2. Choosing an FTP Client
        1. 17.2.1. Windows FTP clients
          1. 17.2.1.1. WS_FTP Professional
          2. 17.2.1.2. FileZilla
        2. 17.2.2. Mac OS X FTP clients
          1. 17.2.2.1. Transmit
          2. 17.2.2.2. Fetch
      3. 17.3. Practicing Sound WordPress Security
        1. 17.3.1. Data sanitization
          1. 17.3.1.1. Casting variables
          2. 17.3.1.2. Sanitizing HTML entities for XML
          3. 17.3.1.3. Using KSES to filter unsafe content
          4. 17.3.1.4. Escaping and encoding HTML
          5. 17.3.1.5. Escaping and encoding HTML attributes
          6. 17.3.1.6. Escaping and encoding JavaScript
          7. 17.3.1.7. Sanitizing URLs
          8. 17.3.1.8. Preventing SQL injection
        2. 17.3.2. File permissions
          1. 17.3.2.1. Unix file permissions
          2. 17.3.2.2. WordPress file permissions
      4. 17.4. Summary
    4. 18. Caching Strategy to Ensure WordPress Scales
      1. 18.1. Understanding Caching
      2. 18.2. Using WordPress Caching Mechanisms
        1. 18.2.1. WordPress object cache
          1. 18.2.1.1. wp_cache_add()
          2. 18.2.1.2. wp_cache_delete()
          3. 18.2.1.3. wp_cache_get()
          4. 18.2.1.4. wp_cache_replace()
          5. 18.2.1.5. wp_cache_flush()
        2. 18.2.2. The WP Super Cache plugin
        3. 18.2.3. Memcached and the Batcache plugin
      3. 18.3. Optimizing PHP with Opcode Caching
        1. 18.3.1. eAccelerator
        2. 18.3.2. APC
      4. 18.4. Caching MySQL with HyperDB and the Query Cache
        1. 18.4.1. MySQL query cache
        2. 18.4.2. HyperDB
      5. 18.5. Harnessing the "Cloud"
      6. 18.6. Summary
    5. 19. Understanding WordPress Roles and Capabilities
      1. 19.1. Looking at WordPress Roles and Capabilities
        1. 19.1.1. User levels
        2. 19.1.2. Adding and removing custom capabilities
        3. 19.1.3. Checking capabilities in plugins
      2. 19.2. Using the Role Manager Plugin
      3. 19.3. Summary
  12. VI. Alternate Uses for WordPress
    1. 20. Using WordPress for Alternative Blogging
      1. 20.1. Photoblogging with WordPress
        1. 20.1.1. What is a Photoblog?
        2. 20.1.2. Examples of notable photoblogs
          1. 20.1.2.1. ThomasHawk.com
          2. 20.1.2.2. The Fine Arts Photoblog
          3. 20.1.2.3. Lens
        3. 20.1.3. Great WordPress photoblog themes
          1. 20.1.3.1. Monotone
          2. 20.1.3.2. Duotone
          3. 20.1.3.3. StudioPress Landscape Child Theme for Genesis
        4. 20.1.4. Using EXIF data in a photoblog
      2. 20.2. Implementing a Twitter-style Blog
      3. 20.3. Using Press This for a Tumble Blog
      4. 20.4. Summary
    2. 21. WordPress as a Content Management System
      1. 21.1. Using WordPress as a Content Management System
        1. 21.1.1. Custom Post Types
        2. 21.1.2. Custom Taxonomies
        3. 21.1.3. Custom Post Formats
      2. 21.2. Understanding Enterprise WordPress Needs
        1. 21.2.1. Single sign-on authentication
        2. 21.2.2. Lead generation and CRM integration
        3. 21.2.3. WordPress support
      3. 21.3. Conveying a Consistent Message and Brand
      4. 21.4. Understanding When a Blog is Not a Blog
      5. 21.5. Summary
  13. VII. Looking at the WordPress Ecosystem
    1. 22. Leveraging WordPress Multisite Functionality
      1. 22.1. Installing and Configuring WordPress Multisite
        1. 22.1.1. Setting Up WordPress Multisite
          1. 22.1.1.1. Creating the blogs.dir directory
          2. 22.1.1.2. Adding Multisite constants
          3. 22.1.1.3. Modifying Rewrite Rules
        2. 22.1.2. WordPress Multisite System Configurations
          1. 22.1.2.1. Wildcard DNS configuration
          2. 22.1.2.2. Apache Wildcard Vhost configuration
      2. 22.2. Managing WordPress Multisite
        1. 22.2.1. Sites panel
        2. 22.2.2. Users panel
        3. 22.2.3. Themes panel
        4. 22.2.4. Plugins panel
        5. 22.2.5. Settings panel
        6. 22.2.6. Updates panel
      3. 22.3. Understanding WordPress Multisite Plugin Nuances
        1. 22.3.1. Blog ID
        2. 22.3.2. WordPress Multisite database schema
          1. 22.3.2.1. Site configuration tables
            1. 22.3.2.1.1. Blogs table
            2. 22.3.2.1.2. Blog Versions table
            3. 22.3.2.1.3. Registration Log table
            4. 22.3.2.1.4. Site table
            5. 22.3.2.1.5. Site Meta table
            6. 22.3.2.1.6. Signups table
          2. 22.3.2.2. Blog-specific tables
      4. 22.4. Adapting to WordPress Multisite
        1. 22.4.1. Activating plugins network wide
        2. 22.4.2. Constructing image permalinks
        3. 22.4.3. Using WordPress Multisite with different domains
      5. 22.5. Summary
    2. 23. Adding User Forums with bbPress
      1. 23.1. Installing bbPress
      2. 23.2. Finding bbPress Plugins
      3. 23.3. Understanding the bbPress Theme System
      4. 23.4. Summary
    3. 24. Creating Your Own Social Network with BuddyPress
      1. 24.1. What Is BuddyPress?
        1. 24.1.1. Activity Stream
        2. 24.1.2. Blog tracking
        3. 24.1.3. bbPress integration
        4. 24.1.4. Friends
        5. 24.1.5. Groups
        6. 24.1.6. Private Messaging
        7. 24.1.7. Extended Profile
      2. 24.2. Configuring BuddyPress
        1. 24.2.1. General Settings
          1. 24.2.1.1. Base profile group name
          2. 24.2.1.2. Full Name field name
          3. 24.2.1.3. Disable BuddyPress to WordPress profile syncing
          4. 24.2.1.4. Hide admin bar for logged out users
          5. 24.2.1.5. Disable avatar uploads
          6. 24.2.1.6. Disable activity stream commenting on blog and forum posts
          7. 24.2.1.7. Disable user account deletion
          8. 24.2.1.8. Disable global forum directory
          9. 24.2.1.9. Default user profile picture
        2. 24.2.2. Component Setup
        3. 24.2.3. Forums Setup
        4. 24.2.4. Profile Field Setup
      3. 24.3. Comparing BuddyPress and WordPress Development
      4. 24.4. Looking at BuddyPress Theme Concepts
      5. 24.5. Extending BuddyPress
      6. 24.6. Summary
    4. 25. Using BackPress as a Development Framework
      1. 25.1. Defining BackPress
      2. 25.2. Developing with BackPress
        1. 25.2.1. Including BackPress in your PHP project
        2. 25.2.2. Understanding the BackPress facilities
          1. 25.2.2.1. class.bp-log.php
          2. 25.2.2.2. class.bp-roles.php
          3. 25.2.2.3. class.bp-sql-schema-parser.php
          4. 25.2.2.4. class.bp-user.php
          5. 25.2.2.5. class.bpdb.php
          6. 25.2.2.6. class.bpdb-multi.php
          7. 25.2.2.7. class.ixr.php
          8. 25.2.2.8. class.mailer-smtp.php
          9. 25.2.2.9. class.mailer.php
          10. 25.2.2.10. class.passwordhash.php
          11. 25.2.2.11. class.wp-ajax-response.php
          12. 25.2.2.12. class.wp-auth.php
          13. 25.2.2.13. class.wp-dependencies.php
          14. 25.2.2.14. class.wp-error.php
          15. 25.2.2.15. class.wp-http.php
          16. 25.2.2.16. class.wp-object-cache.php and class.wp-object-cache-memcached.php
          17. 25.2.2.17. class.wp-pass.php
          18. 25.2.2.18. class.wp-scripts.php
          19. 25.2.2.19. class.wp-styles.php
          20. 25.2.2.20. class.wp-taxonomy.php
          21. 25.2.2.21. class.wp-users.php
      3. 25.3. Solving BackPress Dependencies
      4. 25.4. Summary
    5. 26. WordPress.com and the Automattic Products
      1. 26.1. About Automattic
        1. 26.1.1. After the Deadline
        2. 26.1.2. Akismet
        3. 26.1.3. Gravatar
        4. 26.1.4. IntenseDebate
        5. 26.1.5. P2 Theme
        6. 26.1.6. Plinky
        7. 26.1.7. PollDaddy
        8. 26.1.8. VaultPress
        9. 26.1.9. VideoPress
        10. 26.1.10. VIP Hosting
      2. 26.2. Taking a Look at Automattic's Open Source Footprint
        1. 26.2.1. WordPress
        2. 26.2.2. BuddyPress
        3. 26.2.3. bbPress
        4. 26.2.4. BackPress
        5. 26.2.5. WordPress app for iOS
        6. 26.2.6. WordPress app for Android
        7. 26.2.7. WordPress app for BlackBerry
      3. 26.3. Using WordPress.com Themes
      4. 26.4. Getting Your Plugin Included in WordPress.com
      5. 26.5. Buying Premium WordPress.com Features
        1. 26.5.1. Custom CSS
        2. 26.5.2. Disk space upgrades
        3. 26.5.3. Domain mapping
        4. 26.5.4. No-ads
        5. 26.5.5. Unlimited Private Users
        6. 26.5.6. VideoPress
      6. 26.6. Summary
    6. 27. Leveraging Automattic Products
      1. 27.1. Obtaining a WordPress.com API Key
      2. 27.2. Using Akismet to Kill Spam
        1. 27.2.1. Verify Key
        2. 27.2.2. Comment Checking
        3. 27.2.3. Submit Spam
        4. 27.2.4. Submit Ham
      3. 27.3. Making Use of WordPress.com Stats
      4. 27.4. Engaging Readers with IntenseDebate
      5. 27.5. Crowdsourcing with PollDaddy
      6. 27.6. Summary
  14. VIII. Appendixes
    1. A. WordPress Hook Reference
      1. A.1. Using Actions
      2. A.2. Using Filters
      3. A.3. Hook Reference: Alphabetical Listing
      4. A.4. Hook Reference: General Uses
      5. A.5. Summary
    2. B. Template Tags
      1. B.1. Understanding the Template Tag Concept
      2. B.2. Breaking Down the WordPress Templating System
        1. B.2.1. Include tags
          1. B.2.1.1. Header
          2. B.2.1.2. Sidebar
          3. B.2.1.3. Search Form
          4. B.2.1.4. Comments
          5. B.2.1.5. Footer
          6. B.2.1.6. Template Parts
        2. B.2.2. Blog Info tags
          1. B.2.2.1. Blog Info (Echoed)
          2. B.2.2.2. Blog Info (Returned)
          3. B.2.2.3. Blog Info for RSS (Echoed)
          4. B.2.2.4. Blog Info for RSS (Returned)
        3. B.2.3. Lists and dropdowns
          1. B.2.3.1. Authors List
          2. B.2.3.2. Categories List
          3. B.2.3.3. Pages List
          4. B.2.3.4. Bookmarks/Links List
          5. B.2.3.5. Comments List
          6. B.2.3.6. Archives List
          7. B.2.3.7. Page Menu/Navigation
          8. B.2.3.8. Pages Dropdown
          9. B.2.3.9. Categories Dropdown
          10. B.2.3.10. Users Dropdown
        4. B.2.4. Login/Logout tags
          1. B.2.4.1. Logged in or Logged out?
          2. B.2.4.2. Login Form
          3. B.2.4.3. Login URL
          4. B.2.4.4. Logout URL
          5. B.2.4.5. Lost Password URL
          6. B.2.4.6. Logout
          7. B.2.4.7. Login and Out URL
          8. B.2.4.8. Register URL
        5. B.2.5. Post tags
          1. B.2.5.1. Post ID
          2. B.2.5.2. Post Title
          3. B.2.5.3. Post Title (RSS)
          4. B.2.5.4. Post Title Attribute
          5. B.2.5.5. Post Title (Single)
          6. B.2.5.6. Post Content
          7. B.2.5.7. Post Content (RSS)
          8. B.2.5.8. Post Excerpt
          9. B.2.5.9. Post Excerpt (RSS)
          10. B.2.5.10. Post Pagination Links
          11. B.2.5.11. Next Post Link
          12. B.2.5.12. Next Posts Link
          13. B.2.5.13. Previous Posts Link
          14. B.2.5.14. Previous Posts Link
          15. B.2.5.15. Next Image Link
          16. B.2.5.16. Previous Image Link
          17. B.2.5.17. Post Navigation Link
          18. B.2.5.18. Shortlink
          19. B.2.5.19. Sticky Post Class
          20. B.2.5.20. Post Categories
          21. B.2.5.21. Post Categories (RSS)
          22. B.2.5.22. Post Tags
          23. B.2.5.23. Post Meta
          24. B.2.5.24. Body Class
          25. B.2.5.25. Post Class
          26. B.2.5.26. Post Password Required
        6. B.2.6. Comments tags
          1. B.2.6.1. Number of Comments
          2. B.2.6.2. Comments Link
          3. B.2.6.3. Comments Popup Script
          4. B.2.6.4. Comments Link (Popup)
          5. B.2.6.5. Comment Class
          6. B.2.6.6. Comment Form
          7. B.2.6.7. Comment Class
          8. B.2.6.8. Comment Type
          9. B.2.6.9. Comment ID
          10. B.2.6.10. Comment ID Fields (Threaded Comments)
          11. B.2.6.11. Comments Author
          12. B.2.6.12. Comments Author with Link
          13. B.2.6.13. Comments Author Email
          14. B.2.6.14. Comments Author E-mail with Link
          15. B.2.6.15. Comments Author URL
          16. B.2.6.16. Comments Author URL with Link
          17. B.2.6.17. Comments Author IP Address
          18. B.2.6.18. Comment Type
          19. B.2.6.19. Comments Text
          20. B.2.6.20. Comments Excerpt
          21. B.2.6.21. Comment Date
          22. B.2.6.22. Comment Time
          23. B.2.6.23. Comment Form Title
          24. B.2.6.24. Comments Author (RSS)
          25. B.2.6.25. Comments Text (RSS)
          26. B.2.6.26. Avatars
          27. B.2.6.27. Permalink Comments (RSS)
          28. B.2.6.28. Comment Reply Link
          29. B.2.6.29. Cancel Comment Reply Link
          30. B.2.6.30. Previous Comments Link
          31. B.2.6.31. Next Comments Link
          32. B.2.6.32. Comment Pagination Links
        7. B.2.7. Category tags
          1. B.2.7.1. Categories
          2. B.2.7.2. Categories (RSS)
          3. B.2.7.3. Categories (Dropdown)
          4. B.2.7.4. Categories (List)
          5. B.2.7.5. Currently Browsing Category Archive Title
          6. B.2.7.6. Category Description
        8. B.2.8. Tag/Taxonomy tags
          1. B.2.8.1. Tags
          2. B.2.8.2. Tag Description
          3. B.2.8.3. Currently Browsing Tag Archive Title
          4. B.2.8.4. Tag Cloud
          5. B.2.8.5. Custom Tag Cloud
        9. B.2.9. Author tags
          1. B.2.9.1. The Author
          2. B.2.9.2. The Author Link
          3. B.2.9.3. The Author Post Count
          4. B.2.9.4. The Author Post Count Link
          5. B.2.9.5. The Author Meta
          6. B.2.9.6. Listing Authors
          7. B.2.9.7. Listing Authors (Dropdown)
        10. B.2.10. Date and Time tags
          1. B.2.10.1. Post Time
          2. B.2.10.2. Post Time (Modified)
          3. B.2.10.3. Post Date
          4. B.2.10.4. Post Date (Modified)
          5. B.2.10.5. Post Date (XML)
          6. B.2.10.6. Current Month
          7. B.2.10.7. Calendar
        11. B.2.11. Edit links
          1. B.2.11.1. Edit Post Link
          2. B.2.11.2. Edit Comment Link
          3. B.2.11.3. Edit Tag Link
          4. B.2.11.4. Edit Bookmark Link
        12. B.2.12. Permalink tags
          1. B.2.12.1. Permalink Anchor
          2. B.2.12.2. Permalink for a Specified Post
          3. B.2.12.3. Permalink for a Post
          4. B.2.12.4. Permalink for a Single Post (RSS)
          5. B.2.12.5. Permalink for a Custom Post Type Post
        13. B.2.13. Links tags
          1. B.2.13.1. Listing Bookmarks
          2. B.2.13.2. Get Bookmarks
          3. B.2.13.3. Get Bookmark
        14. B.2.14. Trackback tags
          1. B.2.14.1. Trackback URL
          2. B.2.14.2. Trackback RDF
        15. B.2.15. Title tags
          1. B.2.15.1. Blog Title
          2. B.2.15.2. Single Post Titles
          3. B.2.15.3. Single Category Title
          4. B.2.15.4. Single Tag Title
          5. B.2.15.5. Single Month Title
          6. B.2.15.6. Search Query
        16. B.2.16. Post Thumbnails
          1. B.2.16.1. Post Thumbnail ID
          2. B.2.16.2. Post Thumbnail (Display)
          3. B.2.16.3. Post Thumbnail (Return)
          4. B.2.16.4. Post Thumbnail Exists
      3. B.3. Summary
    3. C. WordPress Hosting
      1. C.1. Features and Requirements of Web Hosts
        1. C.1.1. Disk space
        2. C.1.2. Bandwidth provision
        3. C.1.3. Backups
        4. C.1.4. Secure Shell
      2. C.2. Types of Web Hosts
        1. C.2.1. Dedicated servers
          1. C.2.1.1. ServerBeach
          2. C.2.1.2. Layered Technologies
          3. C.2.1.3. Media Temple
          4. C.2.1.4. Rackspace
        2. C.2.2. WordPress-optimized Hosting
          1. C.2.2.1. Page.ly
          2. C.2.2.2. WP Engine
        3. C.2.3. Shared hosting
          1. C.2.3.1. DreamHost
          2. C.2.3.2. BlueHost
        4. C.2.4. Green Web hosting
      3. C.3. Summary
    4. D. WordPress Vendors and Professional Services
      1. D.1. Top Consultants in the WordPress Community
        1. D.1.1. Covered Web Services
        2. D.1.2. Crowd Favorite
        3. D.1.3. E.Webscapes
        4. D.1.4. Yoast
        5. D.1.5. WebDevStudios
      2. D.2. Directory of Automattic-Recommended Consultants
      3. D.3. Summary
    5. E. WordPress in Government
      1. E.1. WordPress Use in the Federal Government
        1. E.1.1. Government case studies
          1. E.1.1.1. Department of State
          2. E.1.1.2. Coast Guard
          3. E.1.1.3. Office of the Director of National Intelligence
          4. E.1.1.4. Library of Congress
      2. E.2. WordPress Use Outside the United States
        1. E.2.1. United Kingdom: 10 Downing Street
        2. E.2.2. South Africa: Province of the Eastern Cape
      3. E.3. Summary
    6. F. WordPress in Major Media
      1. F.1. Newsroom Challenges for WordPress
      2. F.2. Roadmapping WordPress in Major Media
        1. F.2.1. WordPress MU Sitewide Tags
        2. F.2.2. BuddyPress
        3. F.2.3. RSSCloud
      3. F.3. Summary
    7. G. The General Public License
      1. G.1. Preamble
      2. G.2. GNU GENERAL PUBLIC LICENSE
        1. G.2.1. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
        2. G.2.2. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
        3. G.2.3. NO WARRANTY