SlideShare a Scribd company logo
WordPress Developers Meetup
15/04 - #WPDevIL


                   yoav@farhi.org, @yoavf
Today we’ll talk about...

 Intro, WordPress developers meetup
 New features in recent versions
 3.0
 Getting involved with WordPress development
 Q&A
Hello!
Features History




http://www.flickr.com/photos/nostri-imago/
WordPress Developers Israel Meetup #1
2.7
WordPress Developers Israel Meetup #1
WordPress Developers Israel Meetup #1
WordPress Developers Israel Meetup #1
2.9
WordPress Developers Israel Meetup #1
2.8
WordPress Developers Israel Meetup #1
2.7
2.7
2.7
      • Completely new interface
2.7
      • Completely new interface
      • Comment threading
2.7
      • Completely new interface
      • Comment threading
      • Plugin repository
2.7
      • Completely new interface
      • Comment threading
      • Plugin repository
      • Child themes
2.7
      • Completely new interface
      • Comment threading
      • Plugin repository
      • Child themes
      • Automatic upgrades
2.8
2.8
      • Integrated theme repository
2.8
      • Integrated theme repository
      • New widgets interface and API
Easy Widgets
class MyWidget extends WP_Widget {
   function MyWidget() {
     $this->WP_Widget('MyWidget', __('My Widget'));
   }

    function widget($args, $instance) {
      ?>
             Hello, World!
      <?php
    }
}

add_action('widgets_init', create_function('', 'return
register_widget("MyWidget");'));
Easy Widgets
Easy Widgets
Easy Widgets
    class MyWidget extends WP_Widget {

    function MyWidget() {
      $widget_ops = array( );
      $this->WP_Widget('mywidget', __('MyWidget'), $widget_ops);
    }

    function widget($args, $instance) {
    }

    function form( $instance ) {
    }

    function update( $new_instance, $old_instance ) {
    }
}
2.8
      • Integrated theme repository
      • New widgets interface and API
2.8
      • Integrated theme repository
      • New widgets interface and API
      • Better custom taxonomies
WordPress Developers Israel Meetup #1
Taxonomies

function people_taxonomy() {
    register_taxonomy( 'people', 'post',
array( 'hierarchical' => false, 'label' =>
'‫;) ) 'אנשים‬
}

add_action( 'init', 'people_taxonomy', 0 );
2.8
      • Integrated theme repository
      • New widgets interface and API
      • Better custom taxonomies
2.8
      • Integrated theme repository
      • New widgets interface and API
      • Better custom taxonomies
      • Speed
2.9
2.9
      • General Undo/Trash feature
2.9
      • General Undo/Trash feature
      • Built in image editor
2.9
      • General Undo/Trash feature
      • Built in image editor
      • Easier video embeds (oembed)
2.9
      • General Undo/Trash feature
      • Built in image editor
      • Easier video embeds (oembed)
      • Custom post types
2.9
      • General Undo/Trash feature
      • Built in image editor
      • Easier video embeds (oembed)
      • Custom post types
      • Post thumbnails
Today we’ll talk about...

 Intro, WordPress developers meetup
 New features in recent versions
 3.0
 Getting involved with WordPress development
 Q&A
3.0
ZOMFG!!!1
So, what’s in the bag?




© Keren Segev, with permission
Custom Backgrounds
Backgrounds


 // functions.php
 add_custom_background();
Headers
Headers
  //functions.php
  define( 'HEADER_TEXTCOLOR', '' );
  define( 'NO_HEADER_TEXT', true );
 define( 'HEADER_IMAGE', '%s/images/headers/default.jpg' ); // %s is theme dir
 define( 'HEADER_IMAGE_WIDTH', 775 );
 define( 'HEADER_IMAGE_HEIGHT', 200 );

 add_custom_image_header( '', 'mytheme_admin_header_style' );

 function mytheme_admin_header_style() {
   ?><style type="text/css">
      #header {
         background: url(<?php header_image(); ?>);
      }
   </style><?php
 }
Headers
// functions.php

register_default_headers( array (
    'berries' => array (
          'url' => '%s/images/headers/berries.jpg',
          'thumbnail_url' => '%s/images/headers/berries-thumbnail.jpg',
          'description' => __( 'Berries', 'mytheme' )
    ),
    'cherryblossom' => array (
          'url' => '%s/images/headers/cherryblossoms.jpg',
          'thumbnail_url' => '%s/images/headers/cherryblossoms-thumbnail.jpg',
          'description' => __( 'Cherry Blossoms', 'mytheme' )
    )
) );
<p class="nocomments"><?php _e('Comments are closed.', 'kubrick'); ?></p>
<?php } ?>

<?php if ( comments_open() ) : ?>
<div id="respond">
<h3><?php _e('Leave a Reply', 'kubrick'); ?></h3>
<div class="cancel-comment-reply">
  <small><?php cancel_comment_reply_link() ?></small>
</div>
<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
<p><?php printf(__('You must be <a href="%s">logged in</a> to post a comment.', 'kubrick'), get_option('siteurl') . '/wp-login.php?redirect_to=' . urlencode(get_permalink())); ?></p>
<?php else : ?>

<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
<?php comment_id_fields(); ?>

<?php if ( $user_ID ) : ?>

<p><?php printf(__('Logged in as <a href="%1$s">%2$s</a>.', 'kubrick'), get_option('siteurl') . '/wp-admin/profile.php', $user_identity); ?> <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="<?php _e('Log
out of this account', 'kubrick'); ?>"><?php _e('Logout &raquo;', 'kubrick'); ?></a></p>

<?php else : ?>

<p><input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> />
<label for="author"><small><?php _e('Name', 'kubrick'); ?> <?php if ($req) _e("(required)", "kubrick"); ?></small></label></p>

<p><input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> />
<label for="email"><small><?php _e('E-mail (will not be published)', 'kubrick'); ?> <?php if ($req) _e("(required)", "kubrick"); ?></small></label></p>

<p><input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" />
<label for="url"><small><?php _e('Website', 'kubrick'); ?></small></label></p>

<?php endif; ?>
<!--<p><small><?php printf(__('<strong>XHTML:</strong> You can use these tags: <code>%s</code>', 'kubrick'), allowed_tags()); ?></small></p>-->

<p><textarea name="comment" id="comment" cols="58" rows="10" tabindex="4"></textarea></p>

<p><input name="submit" type="submit" id="submit" tabindex="5" value="<?php _e('Submit Comment', 'kubrick'); ?>" />
<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
</p>
<?php do_action('comment_form', $post->ID); ?>

</form>
<?php endif; // If registration required and not logged in ?>
</div>
?>
Pluggable Comment form



 //comments.php
comment_form();
Navigation menu
Navigation menu
 // functions.php
 add_theme_support( 'nav-menus' );

 //header.php
 wp_list_pages('title_li=');
 wp_nav_menu();


* Will also work in a widget, with all widget enabled themes
WordPress Developers Israel Meetup #1
Custom Post Types
Custom Post Types
    function post_type_reviews() {
        register_post_type('reviews', array(
          'label' => '‫,'ביקורות‬
          'singular_label' => '‫,'ביקורת‬
          'description' => '‫,'ביקורות תוספים לוורדפרס‬
          'public' => true
      ));
}

add_action('init', 'post_type_reviews');
2010: A Theme Odyssey
2010: A Theme Odyssey
2010: A Theme Odyssey
2010 - The perfect example
2010 - The perfect example


 Showcase for 3.0 new features
2010 - The perfect example


 Showcase for 3.0 new features
 Complete, yet flexible
2010 - The perfect example


 Showcase for 3.0 new features
 Complete, yet flexible
 Internationalized and translation ready
2010 - The perfect example


 Showcase for 3.0 new features
 Complete, yet flexible
 Internationalized and translation ready
 Fully documented
A parent for your child theme
A parent for your child theme
  /*
 Theme Name: My New Theme
 Description: Child of Twentyten
 Version: 0.1
 Author: Yoav Farhi
 Author URI: http://blog.yoavfarhi.com
 Template: twentyten
 */
A parent for your child theme
  /*
 Theme Name: My New Theme
 Description: Child of Twentyten
 Version: 0.1
 Author: Yoav Farhi
 Author URI: http://blog.yoavfarhi.com
 Template: twentyten
 */


 @import url(../twentyten/style.css); //optional
Multisite


 // wp-config.php

define( 'WP_ALLOW_MULTISITE', true );
WordPress Developers Israel Meetup #1
WordPress Developers Israel Meetup #1
WordPress Developers Israel Meetup #1
WordPress Developers Israel Meetup #1
3.0
• Custom Background / Header



3.0
• Custom Background / Header



3.0
      • Pluggable comment form
• Custom Background / Header



3.0
      • Pluggable comment form
      • Navigation menu
• Custom Background / Header



3.0
      • Pluggable comment form
      • Navigation menu
      • Custom post types
• Custom Background / Header



3.0
      • Pluggable comment form
      • Navigation menu
      • Custom post types
      • New default theme
• Custom Background / Header



3.0
      • Pluggable comment form
      • Navigation menu
      • Custom post types
      • New default theme
      • Multisite
• Custom Background / Header



3.0
      • Pluggable comment form
      • Navigation menu
      • Custom post types
      • New default theme
      • Multisite
      ...
Today we’ll talk about...

 Intro, WordPress developers meetup
 New features in recent versions
 3.0
 Getting involved with WordPress development
 Q&A
WordPress Developers Israel Meetup #1
Don’t be afraid,
  use the trunk
WordPress Developers Israel Meetup #1
WordPress Developers Israel Meetup #1
Staying
                                         connected



http://www.flickr.com/photos/versageek/
WordPress Developers Israel Meetup #1
WordPress Developers Israel Meetup #1
WordPress Developers Israel Meetup #1
Average: 9 changesets a day
WordPress Developers Israel Meetup #1
WordPress Developers Israel Meetup #1
Staying Connected
• Trac, directly or via RSS or twitter (@wpdevel)
• Weekly dev chats on irc #wordpress-dev
(Freenode)
• The development updates blog:
  http://wpdevel.wordpress.com/
Contributing
Contributing

  Testing
  Translating
  RTLizing
  etc...
Q&A
Matt Mullenweg
Next time?
            Caching
 Security             Buddypress


                      UGC          SEO
            SVN

                               E-commerce
   Plugins 101
Thank You!

More Related Content

PPT
WordPress Child Themes
PPTX
WordPress Theme Development: Part 2
PPTX
The Way to Theme Enlightenment
PPTX
WordPress theme development from scratch : ICT MeetUp 2013 Nepal
PPTX
Creating Customizable Widgets for Unpredictable Needs
PPTX
Shortcodes vs Widgets: Which one and how?
PPTX
Custom WordPress theme development
PDF
WordPress Theme Structure
WordPress Child Themes
WordPress Theme Development: Part 2
The Way to Theme Enlightenment
WordPress theme development from scratch : ICT MeetUp 2013 Nepal
Creating Customizable Widgets for Unpredictable Needs
Shortcodes vs Widgets: Which one and how?
Custom WordPress theme development
WordPress Theme Structure

What's hot (20)

PPTX
Introduction to Custom WordPress Themeing
PDF
Introduction to WordPress Theme Development
PDF
Intro to WordPress theme development
PPTX
The Way to Theme Enlightenment 2017
PPTX
Theme development essentials columbus oh word camp 2012
PPTX
WP Joburg Meetup 10: Genesis Framework by Trish Cornelius
PPTX
Rebrand WordPress Admin
PDF
Seven deadly theming sins
PPT
W pthemes
PDF
Dissecting WordPress Themes and Page Templates, WordPress Columbus Meetup
PPT
WordPress Multisite at WordCamp Columbus by Angie Meeker
PDF
Don't Fear the Custom Theme: How to build a custom WordPress theme with only ...
PPTX
Responsive Theme Workshop - WordCamp Columbus 2015
ODP
Meetup child-themes
KEY
What is (not) WordPress
PDF
There's No Crying In Wordpress! (an intro to WP)
PDF
WordPress Theme Development
PPTX
Customizing WordPress Themes
PPT
Child Themes in WordPress
PDF
Cms & wordpress theme development 2011
Introduction to Custom WordPress Themeing
Introduction to WordPress Theme Development
Intro to WordPress theme development
The Way to Theme Enlightenment 2017
Theme development essentials columbus oh word camp 2012
WP Joburg Meetup 10: Genesis Framework by Trish Cornelius
Rebrand WordPress Admin
Seven deadly theming sins
W pthemes
Dissecting WordPress Themes and Page Templates, WordPress Columbus Meetup
WordPress Multisite at WordCamp Columbus by Angie Meeker
Don't Fear the Custom Theme: How to build a custom WordPress theme with only ...
Responsive Theme Workshop - WordCamp Columbus 2015
Meetup child-themes
What is (not) WordPress
There's No Crying In Wordpress! (an intro to WP)
WordPress Theme Development
Customizing WordPress Themes
Child Themes in WordPress
Cms & wordpress theme development 2011
Ad

Similar to WordPress Developers Israel Meetup #1 (20)

PDF
Wordpress beyond blogging
PDF
Lumberjack 2 - Supercharging WordPress in 2018
PPTX
Childthemes ottawa-word camp-1919
PPTX
WordPress Internationalization and Localization - WordPress Translation Day 3...
PDF
Intro to WordPress Plugin Development
PPTX
Building Potent WordPress Websites
PDF
How to make a WordPress theme
PPTX
WordPress for developers - phpday 2011
PDF
[Bristol WordPress] Supercharging WordPress Development
PPTX
WordPress 3.0 at DC PHP
PPTX
From WordPress With Love
PDF
<Head> Presentation: Plugging Into Wordpress
PPTX
Getting started with WordPress development
PDF
Cain & Obenland — Episode 4
PDF
Creating Your First WordPress Plugin
PDF
Supercharging WordPress Development - Wordcamp Brighton 2019
PPTX
WordPress
PDF
Modern Theming & The Future of WordPress- Working with Full Site Editing and ...
PDF
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
PPTX
Introduction to Plugin Programming, WordCamp Miami 2011
Wordpress beyond blogging
Lumberjack 2 - Supercharging WordPress in 2018
Childthemes ottawa-word camp-1919
WordPress Internationalization and Localization - WordPress Translation Day 3...
Intro to WordPress Plugin Development
Building Potent WordPress Websites
How to make a WordPress theme
WordPress for developers - phpday 2011
[Bristol WordPress] Supercharging WordPress Development
WordPress 3.0 at DC PHP
From WordPress With Love
<Head> Presentation: Plugging Into Wordpress
Getting started with WordPress development
Cain & Obenland — Episode 4
Creating Your First WordPress Plugin
Supercharging WordPress Development - Wordcamp Brighton 2019
WordPress
Modern Theming & The Future of WordPress- Working with Full Site Editing and ...
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
Introduction to Plugin Programming, WordCamp Miami 2011
Ad

More from Yoav Farhi (14)

PDF
Your First Gutenberg Block
PDF
[Atelier] Comment traduire un thème (ou une extension) WordPress
PDF
Gender-fair WordPress: Fixing translation inequality at the core
PDF
Right To Left Languages Support – The Right Way
PDF
Localization: beyond translation
PDF
WordPress in NOT English - WordCamp Hamburg 2014
PDF
Contributing to WordPress (Hebrew)
PDF
WordPress: From Antispambot to Zeroize
PDF
Distributed: Reinventing the Workplace
PDF
וורדפרס.קום - אתרי וורדפרס בקלות
PDF
WordCamp Jerusalem - Doing it Wrong
KEY
התוסף הראשון שלי - וורדפרס
KEY
WordPress theme translation
PPT
WordPress RTL
Your First Gutenberg Block
[Atelier] Comment traduire un thème (ou une extension) WordPress
Gender-fair WordPress: Fixing translation inequality at the core
Right To Left Languages Support – The Right Way
Localization: beyond translation
WordPress in NOT English - WordCamp Hamburg 2014
Contributing to WordPress (Hebrew)
WordPress: From Antispambot to Zeroize
Distributed: Reinventing the Workplace
וורדפרס.קום - אתרי וורדפרס בקלות
WordCamp Jerusalem - Doing it Wrong
התוסף הראשון שלי - וורדפרס
WordPress theme translation
WordPress RTL

Recently uploaded (20)

PDF
Electronic commerce courselecture one. Pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Empathic Computing: Creating Shared Understanding
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Approach and Philosophy of On baking technology
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
cuic standard and advanced reporting.pdf
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Electronic commerce courselecture one. Pdf
Chapter 3 Spatial Domain Image Processing.pdf
Empathic Computing: Creating Shared Understanding
Spectral efficient network and resource selection model in 5G networks
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
The AUB Centre for AI in Media Proposal.docx
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Review of recent advances in non-invasive hemoglobin estimation
Building Integrated photovoltaic BIPV_UPV.pdf
Approach and Philosophy of On baking technology
Per capita expenditure prediction using model stacking based on satellite ima...
cuic standard and advanced reporting.pdf
Diabetes mellitus diagnosis method based random forest with bat algorithm
Mobile App Security Testing_ A Comprehensive Guide.pdf
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Digital-Transformation-Roadmap-for-Companies.pptx
Encapsulation_ Review paper, used for researhc scholars
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf

WordPress Developers Israel Meetup #1

  • 1. WordPress Developers Meetup 15/04 - #WPDevIL yoav@farhi.org, @yoavf
  • 2. Today we’ll talk about... Intro, WordPress developers meetup New features in recent versions 3.0 Getting involved with WordPress development Q&A
  • 6. 2.7
  • 10. 2.9
  • 12. 2.8
  • 14. 2.7
  • 15. 2.7
  • 16. 2.7 • Completely new interface
  • 17. 2.7 • Completely new interface • Comment threading
  • 18. 2.7 • Completely new interface • Comment threading • Plugin repository
  • 19. 2.7 • Completely new interface • Comment threading • Plugin repository • Child themes
  • 20. 2.7 • Completely new interface • Comment threading • Plugin repository • Child themes • Automatic upgrades
  • 21. 2.8
  • 22. 2.8 • Integrated theme repository
  • 23. 2.8 • Integrated theme repository • New widgets interface and API
  • 24. Easy Widgets class MyWidget extends WP_Widget { function MyWidget() { $this->WP_Widget('MyWidget', __('My Widget')); } function widget($args, $instance) { ?> Hello, World! <?php } } add_action('widgets_init', create_function('', 'return register_widget("MyWidget");'));
  • 27. Easy Widgets class MyWidget extends WP_Widget { function MyWidget() { $widget_ops = array( ); $this->WP_Widget('mywidget', __('MyWidget'), $widget_ops); } function widget($args, $instance) { } function form( $instance ) { } function update( $new_instance, $old_instance ) { } }
  • 28. 2.8 • Integrated theme repository • New widgets interface and API
  • 29. 2.8 • Integrated theme repository • New widgets interface and API • Better custom taxonomies
  • 31. Taxonomies function people_taxonomy() { register_taxonomy( 'people', 'post', array( 'hierarchical' => false, 'label' => '‫;) ) 'אנשים‬ } add_action( 'init', 'people_taxonomy', 0 );
  • 32. 2.8 • Integrated theme repository • New widgets interface and API • Better custom taxonomies
  • 33. 2.8 • Integrated theme repository • New widgets interface and API • Better custom taxonomies • Speed
  • 34. 2.9
  • 35. 2.9 • General Undo/Trash feature
  • 36. 2.9 • General Undo/Trash feature • Built in image editor
  • 37. 2.9 • General Undo/Trash feature • Built in image editor • Easier video embeds (oembed)
  • 38. 2.9 • General Undo/Trash feature • Built in image editor • Easier video embeds (oembed) • Custom post types
  • 39. 2.9 • General Undo/Trash feature • Built in image editor • Easier video embeds (oembed) • Custom post types • Post thumbnails
  • 40. Today we’ll talk about... Intro, WordPress developers meetup New features in recent versions 3.0 Getting involved with WordPress development Q&A
  • 42. So, what’s in the bag? © Keren Segev, with permission
  • 44. Backgrounds // functions.php add_custom_background();
  • 46. Headers //functions.php define( 'HEADER_TEXTCOLOR', '' ); define( 'NO_HEADER_TEXT', true ); define( 'HEADER_IMAGE', '%s/images/headers/default.jpg' ); // %s is theme dir define( 'HEADER_IMAGE_WIDTH', 775 ); define( 'HEADER_IMAGE_HEIGHT', 200 ); add_custom_image_header( '', 'mytheme_admin_header_style' ); function mytheme_admin_header_style() { ?><style type="text/css"> #header { background: url(<?php header_image(); ?>); } </style><?php }
  • 47. Headers // functions.php register_default_headers( array ( 'berries' => array ( 'url' => '%s/images/headers/berries.jpg', 'thumbnail_url' => '%s/images/headers/berries-thumbnail.jpg', 'description' => __( 'Berries', 'mytheme' ) ), 'cherryblossom' => array ( 'url' => '%s/images/headers/cherryblossoms.jpg', 'thumbnail_url' => '%s/images/headers/cherryblossoms-thumbnail.jpg', 'description' => __( 'Cherry Blossoms', 'mytheme' ) ) ) );
  • 48. <p class="nocomments"><?php _e('Comments are closed.', 'kubrick'); ?></p> <?php } ?> <?php if ( comments_open() ) : ?> <div id="respond"> <h3><?php _e('Leave a Reply', 'kubrick'); ?></h3> <div class="cancel-comment-reply"> <small><?php cancel_comment_reply_link() ?></small> </div> <?php if ( get_option('comment_registration') && !$user_ID ) : ?> <p><?php printf(__('You must be <a href="%s">logged in</a> to post a comment.', 'kubrick'), get_option('siteurl') . '/wp-login.php?redirect_to=' . urlencode(get_permalink())); ?></p> <?php else : ?> <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform"> <?php comment_id_fields(); ?> <?php if ( $user_ID ) : ?> <p><?php printf(__('Logged in as <a href="%1$s">%2$s</a>.', 'kubrick'), get_option('siteurl') . '/wp-admin/profile.php', $user_identity); ?> <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="<?php _e('Log out of this account', 'kubrick'); ?>"><?php _e('Logout &raquo;', 'kubrick'); ?></a></p> <?php else : ?> <p><input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> /> <label for="author"><small><?php _e('Name', 'kubrick'); ?> <?php if ($req) _e("(required)", "kubrick"); ?></small></label></p> <p><input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> /> <label for="email"><small><?php _e('E-mail (will not be published)', 'kubrick'); ?> <?php if ($req) _e("(required)", "kubrick"); ?></small></label></p> <p><input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" /> <label for="url"><small><?php _e('Website', 'kubrick'); ?></small></label></p> <?php endif; ?> <!--<p><small><?php printf(__('<strong>XHTML:</strong> You can use these tags: <code>%s</code>', 'kubrick'), allowed_tags()); ?></small></p>--> <p><textarea name="comment" id="comment" cols="58" rows="10" tabindex="4"></textarea></p> <p><input name="submit" type="submit" id="submit" tabindex="5" value="<?php _e('Submit Comment', 'kubrick'); ?>" /> <input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" /> </p> <?php do_action('comment_form', $post->ID); ?> </form> <?php endif; // If registration required and not logged in ?> </div> ?>
  • 49. Pluggable Comment form //comments.php comment_form();
  • 51. Navigation menu // functions.php add_theme_support( 'nav-menus' ); //header.php wp_list_pages('title_li='); wp_nav_menu(); * Will also work in a widget, with all widget enabled themes
  • 54. Custom Post Types function post_type_reviews() { register_post_type('reviews', array( 'label' => '‫,'ביקורות‬ 'singular_label' => '‫,'ביקורת‬ 'description' => '‫,'ביקורות תוספים לוורדפרס‬ 'public' => true )); } add_action('init', 'post_type_reviews');
  • 55. 2010: A Theme Odyssey
  • 56. 2010: A Theme Odyssey
  • 57. 2010: A Theme Odyssey
  • 58. 2010 - The perfect example
  • 59. 2010 - The perfect example Showcase for 3.0 new features
  • 60. 2010 - The perfect example Showcase for 3.0 new features Complete, yet flexible
  • 61. 2010 - The perfect example Showcase for 3.0 new features Complete, yet flexible Internationalized and translation ready
  • 62. 2010 - The perfect example Showcase for 3.0 new features Complete, yet flexible Internationalized and translation ready Fully documented
  • 63. A parent for your child theme
  • 64. A parent for your child theme /* Theme Name: My New Theme Description: Child of Twentyten Version: 0.1 Author: Yoav Farhi Author URI: http://blog.yoavfarhi.com Template: twentyten */
  • 65. A parent for your child theme /* Theme Name: My New Theme Description: Child of Twentyten Version: 0.1 Author: Yoav Farhi Author URI: http://blog.yoavfarhi.com Template: twentyten */ @import url(../twentyten/style.css); //optional
  • 66. Multisite // wp-config.php define( 'WP_ALLOW_MULTISITE', true );
  • 71. 3.0
  • 72. • Custom Background / Header 3.0
  • 73. • Custom Background / Header 3.0 • Pluggable comment form
  • 74. • Custom Background / Header 3.0 • Pluggable comment form • Navigation menu
  • 75. • Custom Background / Header 3.0 • Pluggable comment form • Navigation menu • Custom post types
  • 76. • Custom Background / Header 3.0 • Pluggable comment form • Navigation menu • Custom post types • New default theme
  • 77. • Custom Background / Header 3.0 • Pluggable comment form • Navigation menu • Custom post types • New default theme • Multisite
  • 78. • Custom Background / Header 3.0 • Pluggable comment form • Navigation menu • Custom post types • New default theme • Multisite ...
  • 79. Today we’ll talk about... Intro, WordPress developers meetup New features in recent versions 3.0 Getting involved with WordPress development Q&A
  • 81. Don’t be afraid, use the trunk
  • 84. Staying connected http://www.flickr.com/photos/versageek/
  • 91. Staying Connected • Trac, directly or via RSS or twitter (@wpdevel) • Weekly dev chats on irc #wordpress-dev (Freenode) • The development updates blog: http://wpdevel.wordpress.com/
  • 93. Contributing Testing Translating RTLizing etc...
  • 95. Next time? Caching Security Buddypress UGC SEO SVN E-commerce Plugins 101

Editor's Notes

  • #4: The reason we&amp;#x2019;re here!
  • #5: Q: Who&amp;#x2019;s running anything prior to 2.9?
  • #8: Movable type 5, released January 2010
  • #9: Ugly betty - MacBook, Windows, Netscape, and WordPress!
  • #21: to debug scripts and css: define(&apos;SCRIPT_DEBUG&apos;, true);Syntax highlighting (codepress) was dropped in 2.8.1
  • #22: to debug scripts and css: define(&apos;SCRIPT_DEBUG&apos;, true);Syntax highlighting (codepress) was dropped in 2.8.1
  • #23: + register_widget
  • #24: + register_widget
  • #25: + register_widget
  • #26: + register_widget
  • #27: to debug scripts and css: define(&apos;SCRIPT_DEBUG&apos;, true);Syntax highlighting (codepress) was dropped in 2.8.1
  • #29: + register_widget
  • #30: to debug scripts and css: define(&apos;SCRIPT_DEBUG&apos;, true);Syntax highlighting (codepress) was dropped in 2.8.1 Speed for css and js
  • #31: Custom post types = not easy in 3.0
  • #32: Custom post types = not easy in 3.0
  • #33: Custom post types = not easy in 3.0
  • #34: Custom post types = not easy in 3.0
  • #35: Custom post types = not easy in 3.0
  • #37: sip!
  • #53: The best way to start theme development
  • #54: The best way to start theme development
  • #55: The best way to start theme development
  • #56: The best way to start theme development
  • #57: same for rtl.css
  • #58: same for rtl.css
  • #63: Versions I&amp;#x2019;ve personally contributed to.
  • #64: Versions I&amp;#x2019;ve personally contributed to.
  • #65: Versions I&amp;#x2019;ve personally contributed to.
  • #66: Versions I&amp;#x2019;ve personally contributed to.
  • #67: Versions I&amp;#x2019;ve personally contributed to.
  • #68: Versions I&amp;#x2019;ve personally contributed to.
  • #69: Versions I&amp;#x2019;ve personally contributed to.
  • #71: subversion - version control system