Developing Client Themes for      Theme Review          WordCamp YEG 2011                              http://get10up.com ...
Topics
Topics• Theme Review
Topics• Theme Review ➡   What is a Theme Review
Topics• Theme Review ➡   What is a Theme Review ➡   How do you do one
Topics• Theme Review ➡   What is a Theme Review ➡   How do you do one• Client Themes
Topics• Theme Review ➡   What is a Theme Review ➡   How do you do one• Client Themes ➡   Why use the Theme Review Process?
Topics• Theme Review ➡   What is a Theme Review ➡   How do you do one• Client Themes ➡   Why use the Theme Review Process?...
Topics• Theme Review ➡   What is a Theme Review ➡   How do you do one• Client Themes ➡   Why use the Theme Review Process?...
Theme Review
Theme Review
Theme Review• History
Theme Review• History ➡   Theme Reviews were started in June 2010
Theme Review• History ➡   Theme Reviews were started in June 2010 ➡   What was it like before June 2010?
Theme Review• History ➡   Theme Reviews were started in June 2010 ➡   What was it like before June 2010?     ➡   buggy the...
Theme Review
Theme Review• Malicious Code or link spam
Theme Review• Malicious Code or link spam• Bogus attribution link requirements
Theme Review• Malicious Code or link spam• Bogus attribution link requirements• No encrypted code
Theme Review• Malicious Code or link spam• Bogus attribution link requirements• No encrypted code• 100% GPL or GPL complia...
Theme Review• Malicious Code or link spam• Bogus attribution link requirements• No encrypted code• 100% GPL or GPL complia...
Theme Review• Malicious Code or link spam• Bogus attribution link requirements• No encrypted code• 100% GPL or GPL complia...
Theme Review• Malicious Code or link spam• Bogus attribution link requirements• No encrypted code• 100% GPL or GPL complia...
Setting up for a Theme Review
WordPress Installs
WordPress Installs• Current version of WordPress
WordPress Installs• Current version of WordPress• next beta/alpha version of WordPress
WordPress Installs• Current version of WordPress• next beta/alpha version of WordPress ➡   check for future compliance
WordPress Installs• Current version of WordPress• next beta/alpha version of WordPress ➡   check for future compliance ➡  ...
WordPress Installs• Current version of WordPress• next beta/alpha version of WordPress ➡   check for future compliance ➡  ...
WordPress Plugins
WordPress Plugins• Theme Check
WordPress Plugins• Theme Check ➡   runs the same checks the theme uploader does
WordPress Plugins• Theme Check ➡   runs the same checks the theme uploader does ➡   gives you a place to start your review...
WordPress Plugins• Theme Check ➡   runs the same checks the theme uploader does ➡   gives you a place to start your review...
WordPress Plugins
WordPress Plugins• Log Deprecated Notices
WordPress Plugins
WordPress Plugins• Debug Bar
WordPress Plugins• Debug Bar ➡   adds debug menu to the admin bar
WordPress Plugins• Debug Bar ➡   adds debug menu to the admin bar ➡   shows queries, debug notices, cache
WordPress Plugins• Debug Bar ➡   adds debug menu to the admin bar ➡   shows queries, debug notices, cache ➡   add Debug Ba...
WordPress Plugins• FixPress ➡   fixes the WordPress galleries for valid HTML and styles ➡   cleans up the comments for XHTM...
Testing Data
Testing Data• Theme Unit Test
Testing Data• Theme Unit Test ➡   posts with stupid long titles
Testing Data• Theme Unit Test ➡   posts with stupid long titles ➡   images of all alignments with and without caption
Testing Data• Theme Unit Test ➡   posts with stupid long titles ➡   images of all alignments with and without caption ➡   ...
Testing Data• Theme Unit Test ➡   posts with stupid long titles ➡   images of all alignments with and without caption ➡   ...
Testing Data• Theme Unit Test ➡   posts with stupid long titles ➡   images of all alignments with and without caption ➡   ...
What are we looking for exactly?
Malicious Code
Malicious Code• no use of base_64 in themes
Malicious Code• no use of base_64 in themes• no exploits of any kind
Malicious Code• no use of base_64 in themes• no exploits of any kind• sadly themes are still submitted
Link Spam
Link Spam• SEO links in footer, headers....
HTML/XHTML/CSS
HTML/XHTML/CSS• theme should validate
HTML/XHTML/CSS• theme should validate• browser prefixing is okay
HTML/XHTML/CSS• theme should validate• browser prefixing is okay• really just covering high level stuff
HTML/XHTML/CSS• theme should validate• browser prefixing is okay• really just covering high level stuff• FixPress
PHP/JS Errors
PHP/JS Errors• clean an quite
PHP/JS Errors• clean an quite
Deprecated Functions
Deprecated Functions• we see this lots
Deprecated Functions• we see this lots• lots of online tutorials use old bad  practices
Deprecated Functions• we see this lots• lots of online tutorials use old bad  practices
Using the WordPress Way
Using the WordPress Way• using the built in WordPress functionality
Using the WordPress Way• using the built in WordPress functionality  ➡   post formats
Using the WordPress Way• using the built in WordPress functionality  ➡   post formats  ➡   post thumbnails
Using the WordPress Way• using the built in WordPress functionality  ➡   post formats  ➡   post thumbnails  ➡   changing h...
Using the WordPress Way• using the built in WordPress functionality  ➡   post formats  ➡   post thumbnails  ➡   changing h...
Using the WordPress Way• using the built in WordPress functionality  ➡   post formats  ➡   post thumbnails  ➡   changing h...
Prefixing
Prefixing• properly prefixing functions
Prefixing• properly prefixing functions ➡   another tutorial mess
Prefixing• properly prefixing functions ➡   another tutorial mess ➡   prevent conflicts with other code in child themes or pl...
Prefixing• properly prefixing functions ➡   another tutorial mess ➡   prevent conflicts with other code in child themes or pl...
Prefixing• properly prefixing functions ➡   another tutorial mess ➡   prevent conflicts with other code in child themes or pl...
Prefixing• properly prefixing functions ➡   another tutorial mess ➡   prevent conflicts with other code in child themes or pl...
Text Domain
Text Domain• internationalization
Text Domain• internationalization• again lots of themes use ‘twentyten’ as their  text domain
Documentation
Documentation• NOT how to use WordPress or core  WordPress functionality
Documentation• NOT how to use WordPress or core  WordPress functionality• is there anything unique that may need  more exp...
Documentation• NOT how to use WordPress or core  WordPress functionality• is there anything unique that may need  more exp...
Frontend Display
Frontend Display• NOT an aesthetic judgement
Frontend Display• NOT an aesthetic judgement ➡   we don’t care what it looks like
Frontend Display• NOT an aesthetic judgement ➡   we don’t care what it looks like• needs to support standard content in th...
Frontend Display• NOT an aesthetic judgement ➡   we don’t care what it looks like• needs to support standard content in th...
Frontend Display• NOT an aesthetic judgement ➡   we don’t care what it looks like• needs to support standard content in th...
Frontend Display• NOT an aesthetic judgement ➡   we don’t care what it looks like• needs to support standard content in th...
Child Theme Readiness
Child Theme Readiness• Themes should use the following as  appropriate
Child Theme Readiness• Themes should use the following as  appropriate ➡   get_template_part
Child Theme Readiness• Themes should use the following as  appropriate ➡   get_template_part ➡   locate_template
Child Theme Readiness• Themes should use the following as  appropriate ➡   get_template_part ➡   locate_template ➡   get_s...
Child Theme Readiness• Themes should use the following as  appropriate ➡   get_template_part ➡   locate_template ➡   get_s...
Security
Security• escape user input
Security• escape user input  ➡   esc_attr, esc_html, wp_kses, esc_textarea....
Client Themes
Clients
Clients• clients break things
Clients• clients break things• Theme Review helps make sure
Clients• clients break things• Theme Review helps make sure  ➡   we use current WordPress best practices
Clients• clients break things• Theme Review helps make sure  ➡   we use current WordPress best practices  ➡   our themes a...
Clients• clients break things• Theme Review helps make sure  ➡   we use current WordPress best practices  ➡   our themes a...
Deviate from Review
Deviate from Review• text domain and internationalization
Deviate from Review• text domain and internationalization• .git/.svn directories
Deviate from Review• text domain and internationalization• .git/.svn directories• tags
Going Further
Inline Documentation
Inline Documentation• page template documentation
Inline Documentation• page template documentation
Inline Documentation
Inline Documentation• Function level PHP docblock
Inline Documentation• Function level PHP docblock
Plugin Territory
Plugin Territory• Does this functionality need to live beyond  this specific site design?
Plugin Territory• Does this functionality need to live beyond  this specific site design?  ➡   CPT’s like a portfolio on yo...
Plugin Territory• Does this functionality need to live beyond  this specific site design?  ➡   CPT’s like a portfolio on yo...
Resources•   http://codex.wordpress.org/Theme_Review•   http://www.chipbennett.net/2011/04/20/a-guide-to-reviewing-themes-...
Developing Client Themes for      Theme Review          WordCamp YEG 2011                              http://get10up.com ...
Upcoming SlideShare
Loading in...5
×

Developing client themes for theme review for WordCamp Edmonton

687

Published on

What is the WordPress.org Theme Review process and why should you be using it for your client theme development.

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
687
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
9
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Developing client themes for theme review for WordCamp Edmonton

    1. 1. Developing Client Themes for Theme Review WordCamp YEG 2011 http://get10up.com @curtismchale
    2. 2. Topics
    3. 3. Topics• Theme Review
    4. 4. Topics• Theme Review ➡ What is a Theme Review
    5. 5. Topics• Theme Review ➡ What is a Theme Review ➡ How do you do one
    6. 6. Topics• Theme Review ➡ What is a Theme Review ➡ How do you do one• Client Themes
    7. 7. Topics• Theme Review ➡ What is a Theme Review ➡ How do you do one• Client Themes ➡ Why use the Theme Review Process?
    8. 8. Topics• Theme Review ➡ What is a Theme Review ➡ How do you do one• Client Themes ➡ Why use the Theme Review Process? ➡ How do we differ?
    9. 9. Topics• Theme Review ➡ What is a Theme Review ➡ How do you do one• Client Themes ➡ Why use the Theme Review Process? ➡ How do we differ? ➡ Taking it a Step Further
    10. 10. Theme Review
    11. 11. Theme Review
    12. 12. Theme Review• History
    13. 13. Theme Review• History ➡ Theme Reviews were started in June 2010
    14. 14. Theme Review• History ➡ Theme Reviews were started in June 2010 ➡ What was it like before June 2010?
    15. 15. Theme Review• History ➡ Theme Reviews were started in June 2010 ➡ What was it like before June 2010? ➡ buggy themes that didn’t function well and were ugly
    16. 16. Theme Review
    17. 17. Theme Review• Malicious Code or link spam
    18. 18. Theme Review• Malicious Code or link spam• Bogus attribution link requirements
    19. 19. Theme Review• Malicious Code or link spam• Bogus attribution link requirements• No encrypted code
    20. 20. Theme Review• Malicious Code or link spam• Bogus attribution link requirements• No encrypted code• 100% GPL or GPL compliant code
    21. 21. Theme Review• Malicious Code or link spam• Bogus attribution link requirements• No encrypted code• 100% GPL or GPL compliant code ➡ Apache License 2.0, Artistic License 2.0, Berkely Database License
    22. 22. Theme Review• Malicious Code or link spam• Bogus attribution link requirements• No encrypted code• 100% GPL or GPL compliant code ➡ Apache License 2.0, Artistic License 2.0, Berkely Database License ➡ http://www.gnu.org/licenses/license-list.html
    23. 23. Theme Review• Malicious Code or link spam• Bogus attribution link requirements• No encrypted code• 100% GPL or GPL compliant code ➡ Apache License 2.0, Artistic License 2.0, Berkely Database License ➡ http://www.gnu.org/licenses/license-list.html• WordPress best practices
    24. 24. Setting up for a Theme Review
    25. 25. WordPress Installs
    26. 26. WordPress Installs• Current version of WordPress
    27. 27. WordPress Installs• Current version of WordPress• next beta/alpha version of WordPress
    28. 28. WordPress Installs• Current version of WordPress• next beta/alpha version of WordPress ➡ check for future compliance
    29. 29. WordPress Installs• Current version of WordPress• next beta/alpha version of WordPress ➡ check for future compliance ➡ wp_editor function
    30. 30. WordPress Installs• Current version of WordPress• next beta/alpha version of WordPress ➡ check for future compliance ➡ wp_editor function• set WP_DEBUG to true
    31. 31. WordPress Plugins
    32. 32. WordPress Plugins• Theme Check
    33. 33. WordPress Plugins• Theme Check ➡ runs the same checks the theme uploader does
    34. 34. WordPress Plugins• Theme Check ➡ runs the same checks the theme uploader does ➡ gives you a place to start your review with
    35. 35. WordPress Plugins• Theme Check ➡ runs the same checks the theme uploader does ➡ gives you a place to start your review with ➡ any items that are ‘required’ are cause for non-approval of theme
    36. 36. WordPress Plugins
    37. 37. WordPress Plugins• Log Deprecated Notices
    38. 38. WordPress Plugins
    39. 39. WordPress Plugins• Debug Bar
    40. 40. WordPress Plugins• Debug Bar ➡ adds debug menu to the admin bar
    41. 41. WordPress Plugins• Debug Bar ➡ adds debug menu to the admin bar ➡ shows queries, debug notices, cache
    42. 42. WordPress Plugins• Debug Bar ➡ adds debug menu to the admin bar ➡ shows queries, debug notices, cache ➡ add Debug Bar Extender for even more
    43. 43. WordPress Plugins• FixPress ➡ fixes the WordPress galleries for valid HTML and styles ➡ cleans up the comments for XHTML validation
    44. 44. Testing Data
    45. 45. Testing Data• Theme Unit Test
    46. 46. Testing Data• Theme Unit Test ➡ posts with stupid long titles
    47. 47. Testing Data• Theme Unit Test ➡ posts with stupid long titles ➡ images of all alignments with and without caption
    48. 48. Testing Data• Theme Unit Test ➡ posts with stupid long titles ➡ images of all alignments with and without caption ➡ post formats
    49. 49. Testing Data• Theme Unit Test ➡ posts with stupid long titles ➡ images of all alignments with and without caption ➡ post formats ➡ nested comments
    50. 50. Testing Data• Theme Unit Test ➡ posts with stupid long titles ➡ images of all alignments with and without caption ➡ post formats ➡ nested comments ➡ ...
    51. 51. What are we looking for exactly?
    52. 52. Malicious Code
    53. 53. Malicious Code• no use of base_64 in themes
    54. 54. Malicious Code• no use of base_64 in themes• no exploits of any kind
    55. 55. Malicious Code• no use of base_64 in themes• no exploits of any kind• sadly themes are still submitted
    56. 56. Link Spam
    57. 57. Link Spam• SEO links in footer, headers....
    58. 58. HTML/XHTML/CSS
    59. 59. HTML/XHTML/CSS• theme should validate
    60. 60. HTML/XHTML/CSS• theme should validate• browser prefixing is okay
    61. 61. HTML/XHTML/CSS• theme should validate• browser prefixing is okay• really just covering high level stuff
    62. 62. HTML/XHTML/CSS• theme should validate• browser prefixing is okay• really just covering high level stuff• FixPress
    63. 63. PHP/JS Errors
    64. 64. PHP/JS Errors• clean an quite
    65. 65. PHP/JS Errors• clean an quite
    66. 66. Deprecated Functions
    67. 67. Deprecated Functions• we see this lots
    68. 68. Deprecated Functions• we see this lots• lots of online tutorials use old bad practices
    69. 69. Deprecated Functions• we see this lots• lots of online tutorials use old bad practices
    70. 70. Using the WordPress Way
    71. 71. Using the WordPress Way• using the built in WordPress functionality
    72. 72. Using the WordPress Way• using the built in WordPress functionality ➡ post formats
    73. 73. Using the WordPress Way• using the built in WordPress functionality ➡ post formats ➡ post thumbnails
    74. 74. Using the WordPress Way• using the built in WordPress functionality ➡ post formats ➡ post thumbnails ➡ changing header images
    75. 75. Using the WordPress Way• using the built in WordPress functionality ➡ post formats ➡ post thumbnails ➡ changing header images ➡ wp_editor
    76. 76. Using the WordPress Way• using the built in WordPress functionality ➡ post formats ➡ post thumbnails ➡ changing header images ➡ wp_editor ➡ usually move from recommendation to required over a version
    77. 77. Prefixing
    78. 78. Prefixing• properly prefixing functions
    79. 79. Prefixing• properly prefixing functions ➡ another tutorial mess
    80. 80. Prefixing• properly prefixing functions ➡ another tutorial mess ➡ prevent conflicts with other code in child themes or plugins
    81. 81. Prefixing• properly prefixing functions ➡ another tutorial mess ➡ prevent conflicts with other code in child themes or plugins ➡ twenty_ten is a common failed prefix
    82. 82. Prefixing• properly prefixing functions ➡ another tutorial mess ➡ prevent conflicts with other code in child themes or plugins ➡ twenty_ten is a common failed prefix• Franks Photo
    83. 83. Prefixing• properly prefixing functions ➡ another tutorial mess ➡ prevent conflicts with other code in child themes or plugins ➡ twenty_ten is a common failed prefix• Franks Photo ➡ sfn_frph_function_name(){}
    84. 84. Text Domain
    85. 85. Text Domain• internationalization
    86. 86. Text Domain• internationalization• again lots of themes use ‘twentyten’ as their text domain
    87. 87. Documentation
    88. 88. Documentation• NOT how to use WordPress or core WordPress functionality
    89. 89. Documentation• NOT how to use WordPress or core WordPress functionality• is there anything unique that may need more explanation?
    90. 90. Documentation• NOT how to use WordPress or core WordPress functionality• is there anything unique that may need more explanation? ➡ Install WP Cycle to get the gallery we show in the preview
    91. 91. Frontend Display
    92. 92. Frontend Display• NOT an aesthetic judgement
    93. 93. Frontend Display• NOT an aesthetic judgement ➡ we don’t care what it looks like
    94. 94. Frontend Display• NOT an aesthetic judgement ➡ we don’t care what it looks like• needs to support standard content in the Theme Unit Test data
    95. 95. Frontend Display• NOT an aesthetic judgement ➡ we don’t care what it looks like• needs to support standard content in the Theme Unit Test data ➡ stupid long titles
    96. 96. Frontend Display• NOT an aesthetic judgement ➡ we don’t care what it looks like• needs to support standard content in the Theme Unit Test data ➡ stupid long titles ➡ no titles
    97. 97. Frontend Display• NOT an aesthetic judgement ➡ we don’t care what it looks like• needs to support standard content in the Theme Unit Test data ➡ stupid long titles ➡ no titles ➡ huge site names
    98. 98. Child Theme Readiness
    99. 99. Child Theme Readiness• Themes should use the following as appropriate
    100. 100. Child Theme Readiness• Themes should use the following as appropriate ➡ get_template_part
    101. 101. Child Theme Readiness• Themes should use the following as appropriate ➡ get_template_part ➡ locate_template
    102. 102. Child Theme Readiness• Themes should use the following as appropriate ➡ get_template_part ➡ locate_template ➡ get_stylesheet_uri/get_stylesheet_directory
    103. 103. Child Theme Readiness• Themes should use the following as appropriate ➡ get_template_part ➡ locate_template ➡ get_stylesheet_uri/get_stylesheet_directory ➡ get_template_uri/get_template_directory
    104. 104. Security
    105. 105. Security• escape user input
    106. 106. Security• escape user input ➡ esc_attr, esc_html, wp_kses, esc_textarea....
    107. 107. Client Themes
    108. 108. Clients
    109. 109. Clients• clients break things
    110. 110. Clients• clients break things• Theme Review helps make sure
    111. 111. Clients• clients break things• Theme Review helps make sure ➡ we use current WordPress best practices
    112. 112. Clients• clients break things• Theme Review helps make sure ➡ we use current WordPress best practices ➡ our themes are secure
    113. 113. Clients• clients break things• Theme Review helps make sure ➡ we use current WordPress best practices ➡ our themes are secure ➡ all possible data types display properly
    114. 114. Deviate from Review
    115. 115. Deviate from Review• text domain and internationalization
    116. 116. Deviate from Review• text domain and internationalization• .git/.svn directories
    117. 117. Deviate from Review• text domain and internationalization• .git/.svn directories• tags
    118. 118. Going Further
    119. 119. Inline Documentation
    120. 120. Inline Documentation• page template documentation
    121. 121. Inline Documentation• page template documentation
    122. 122. Inline Documentation
    123. 123. Inline Documentation• Function level PHP docblock
    124. 124. Inline Documentation• Function level PHP docblock
    125. 125. Plugin Territory
    126. 126. Plugin Territory• Does this functionality need to live beyond this specific site design?
    127. 127. Plugin Territory• Does this functionality need to live beyond this specific site design? ➡ CPT’s like a portfolio on your site
    128. 128. Plugin Territory• Does this functionality need to live beyond this specific site design? ➡ CPT’s like a portfolio on your site ➡ taxonomies, slideshows, google analytics...
    129. 129. Resources• http://codex.wordpress.org/Theme_Review• http://www.chipbennett.net/2011/04/20/a-guide-to-reviewing-themes-for-the-wordpress-theme- repository/• http://codex.wordpress.org/Data_Validation• http://wordpress.org/extend/plugins/debug-bar-extender/• http://wordpress.org/extend/plugins/debug-bar/• http://wordpress.org/extend/plugins/fixpress/• http://wordpress.org/extend/plugins/log-deprecated-notices/• http://wordpress.org/extend/plugins/wordpress-beta-tester/
    130. 130. Developing Client Themes for Theme Review WordCamp YEG 2011 http://get10up.com @curtismchale
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×