O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

WordPress 3 Plugin Development Essentials

Book Description

Create your own powerful, interactive plugins to extend and add features to your WordPress site

  • Everything you need to know to develop your own plugins for WordPress
  • Walk through the development of five plugins from ground up
  • Prepare and release your plugins to the WordPress community
  • Avoid common mistakes made by most plugin developers by learning more advanced development patterns

In Detail

WordPress is one of the most popular platforms for building blogs and general websites. By learning how to develop and integrate your own plugins, you can add functionality and extend WordPress in any way imaginable. By tapping into the additional power and functionality that plugins provide, you can make your site easier to administer, add new features, or even alter the very nature of how WordPress works. Covering WordPress version 3, this book makes it super easy for you to build a variety of plugins.

WordPress 3 Plugin Development Essentials is a practical hands-on tutorial for learning how to create your own plugins for WordPress. Using best coding practices, this book will walk you through the design and creation of a variety of original plugins.

WordPress 3 Plugin Development Essentials focuses on teaching you all aspects of modern WordPress development. The book uses real and published WordPress plugins and follows their creation from the idea to the finishing touches in a series of easy-to-follow and informative steps. You will discover how to deconstruct an existing plugin, use the WordPress API in typical scenarios, hook into the database, version your code with SVN, and deploy your new plugin to the world.

Each new chapter introduces different features of WordPress and how to put them to good use, allowing you to gradually advance your knowledge. WordPress 3 Plugin Development Essentials is packed with information, tips, and examples that will help you gain comfort and confidence in your ability to harness and extend the power of WordPress via plugins.

A step-by-step guide for creating feature-rich plug-ins for WordPress

Table of Contents

  1. WordPress 3 Plugin Development Essentials
    1. WordPress 3 Plugin Development Essentials
    2. Credits
    3. About the Authors
    4. About the Reviewers
    5. www.PacktPub.com
      1. Support files, eBooks, discount offers and more
        1. Why Subscribe?
        2. Free Access for Packt account holders
    6. Preface
      1. What this book covers
      2. What you need for this book
      3. Who this book is for
      4. Conventions
      5. Reader feedback
      6. Customer support
        1. Downloading the example code for this book
        2. Errata
        3. Piracy
        4. Questions
    7. 1. Preparing for WordPress Development
      1. WordPress background
      2. Extending WordPress
      3. Understanding WordPress architecture
        1. Templating
        2. Introducing plugins
      4. Summarizing architecture
      5. Tools for web development
        1. WordPress
        2. Mac
        3. Windows
        4. Text editor
        5. Using an IDE
        6. FTP client
        7. MySQL client
      6. Coding best practices
      7. Basic organization
        1. Isolate tasks into functions
        2. Use classes
        3. Use descriptive variable names
        4. Use descriptive function names
        5. Separate logic and display layers
        6. Go modular, to a point
        7. Avoid short tags
      8. Planning ahead / starting development
        1. Interfaces
        2. Localization
        3. Documentation for the developer
        4. Version control
        5. Environment
        6. Tests
        7. Security
          1. Printing user-supplied data to a page
          2. Using user-supplied data to construct database queries
      9. Debugging
        1. Clearing your browser cache
        2. Updating your php.ini file
        3. Configuring your wp-config.php file
        4. Checking your syntax
        5. Checking values
        6. Exercise
      10. Summary
    8. 2. Anatomy of a Plugin
      1. Deconstructing an existing plugin: "Hello Dolly"
        1. Activating the plugin
        2. Examining the hello.php file
      2. Information header
        1. Exercise—breaking the header
        2. Location, name, and format
      3. Understanding the Includes
        1. Exercise parse errors
      4. Bonus for the curious
      5. User-defined functions
        1. Exercise—an evil functionless plugin
        2. What just happened
        3. Omitting the closing "?>" PHP tag
        4. A better example: Adding functions
      6. Referencing hooks via add_action() and add_filter()
      7. Actions versus Filters
        1. Exercise—actions and filters
        2. Exercise—filters
        3. Reading more
      8. Summary
    9. 3. Social Bookmarking
      1. The overall plan
      2. Proof of concept
        1. Avoiding conflicting function names
      3. The master plugin outline
        1. The plugin information header
          1. In your browser—information header
        2. Adding a link to the post content
          1. Documenting our functions
          2. In your browser—linking to the post content
        3. Adding JavaScript to the head
          1. Making our link dynamic
            1. In your browser—dynamic links
        4. Adding a button template
        5. Getting the post URL
          1. In your browser—getting the post URL
        6. Getting the post title
        7. Getting the description
        8. Getting the media type
        9. Getting the post topic
          1. In your browser—title, description, and topic
      4. Checking WordPress versions
      5. Summary
    10. 4. Ajax Search
      1. What is Ajax?
      2. The overall plan
      3. The proof of concept mock up
        1. Hooking up jQuery
          1. Test that jQuery has loaded
          2. What happened?
          3. Using the FireBug console directly
        2. Writing HTML dynamically to a target div
          1. Multi-line strings
          2. Viewing the generated page
          3. Anonymous functions
          4. Adding a div on the fly
        3. Create a listener
        4. Fetching data from another page
      4. Creating our plugin
        1. Creating index.php and activating the plugin
        2. Creating our first PHP class
        3. Updating index.php
        4. Testing your version of PHP
        5. Testing for searchable pages
        6. Adding your own CSS files
        7. Adding your search handler
        8. Adding your own JavaScript
        9. Handling Ajax search requests
        10. Formatting your search results
      5. Summary
    11. 5. Content Rotator
      1. The plan
      2. Widget overview
      3. Preparation
        1. Activating your plugin
        2. Activating the widget
          1. Having problems?
        3. Parents and children: extending classes
        4. Objects vs. libraries: when to use static functions
      4. Add custom text
      5. Adding widget options
      6. Generating random content
      7. Expiration dates: adding options to our widget
        1. Expiration dates: enforcing the shelf life
        2. Explaining the $instance
      8. Adding a custom manager page
        1. Adding options to the custom manager page
      9. Randomizing content from the database
      10. Review of PHP functions used
      11. Summary
    12. 6. Standardized Custom Content
      1. What WordPress does for you: custom fields
      2. What WordPress doesn't do for you
      3. Standardizing a post's custom fields
      4. Creating a new plugin
        1. Removing the default WordPress form for custom fields
        2. Creating our own custom meta box
        3. Defining custom fields
        4. Generating custom form elements
        5. Saving custom content
      5. Having trouble saving data?
      6. Displaying custom data in your Templates
        1. Copying a theme
        2. Modifying the theme
        3. Granular display of custom fields
        4. Bonus for the MySQL curious
      7. Known limitations
      8. Summary
    13. 7. Custom Post Types
      1. Background: What's in a name?
      2. Understanding register_post_type()
      3. Customizing our post type
        1. Using shortcodes
        2. Testing our shortcode
      4. Customizing our plugin
      5. Creating a settings shortcut link
      6. Cleaning up when uninstalling
      7. Summary
    14. 8. Versioning Your Code with Subversion (SVN)
      1. Why Subversion?
        1. Understanding the terminology and concepts
        2. Checking out a local working copy
        3. SVN folder structure
        4. Checkout, revisited
      2. Setting up an SVN repository
      3. Checking out a local working copy of our repo
      4. Adding files
      5. Committing changes to the repository
      6. Overcoming errors
        1. Verifying the new state of your repository
        2. Adding more files to your repository
        3. Removing files from the repository
        4. Updating your working copy
        5. Tagging a version
        6. Reverting an entire project
        7. Reverting a single file
      7. Moving files
      8. Exporting your working copy
      9. Quick reference
      10. Summary
    15. 9. Preparing Your Plugin for Distribution
      1. Public enemy number one: PHP notices
      2. PHP short tags
      3. Conflicting names
      4. Modifying loader.php
      5. Testing WordPress version
      6. Testing PHP version
      7. Testing MySQL version
      8. Testing PHP modules
      9. Testing WordPress installed plugins
      10. Custom tests
      11. Unit tests
      12. WordPress limitations
      13. Health check page
      14. Storing test results in the database
      15. Death to clippy: Use sensible configurations
      16. Double check your interface
      17. Documentation
        1. Identify the purpose
        2. Learning to drive: Keeping it relevant
        3. Phrasebooks vs. dictionaries: Give examples
        4. Analogy: The three bears
        5. Analogy: PC load letter
      18. The decalog of documentation
      19. Summary
    16. 10. Publishing Your Plugin
      1. Internationalization and localization
      2. Processing each message
        1. Choosing a textdomain
      3. Best practices
        1. Working with formatting
        2. More advanced messages
        3. Plural vs. singular
        4. More complex messages
          1. Notes to translators
        5. Language files
        6. Creating a POT file
        7. Creating translations: .po files
        8. Loading a textdomain
        9. Updating a translation
        10. Format for the readme.txt file
          1. Section installation
          2. Section Frequently Asked Questions
          3. Section screenshots
          4. New addition videos
          5. Section summary
        11. Requesting and using SVN access
        12. Publicity and promotion
        13. Summary
    17. A. Recommended Resources
      1. PHP reference
      2. Function reference
      3. The WordPress forums
      4. WebDev Studios
      5. Viper007Bond
      6. Kovshenin
      7. SLTaylor
      8. XPlus3
      9. WP Engineer
      10. Other plugins
    18. B. WordPress API Reference
      1. PHP functions
        1. dirname
        2. file_get_contents
        3. preg_match
        4. preg_replace
        5. print_r
        6. sprintf
        7. strtolower
        8. substr
      2. WordPress Functions
        1. __
        2. _e
        3. add_action
        4. add_filter
        5. add_meta_box
        6. add_options_page
        7. check_admin_referer
        8. esc_html
        9. get_option
        10. get_post_meta
        11. get_the_ID
        12. register_post_type
        13. remove_meta_box
        14. screen_icon
        15. the_content
        16. the_meta
        17. update_post_meta
        18. wp_count_posts
        19. wp_die
        20. wp_nonce_field
      3. Actions
        1. admin_init
        2. admin_menu
        3. do_meta_boxes
        4. init
        5. save_post
        6. widgets_init
        7. wp_head
      4. Filters
        1. the_content