Your SlideShare is downloading. ×
WordPress Developers Israel Meetup #1
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

WordPress Developers Israel Meetup #1

4,179
views

Published on

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
4,179
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide


  • The reason we’re here!
  • Q: Who’s running anything prior to 2.9?


  • Movable type 5, released January 2010
  • Ugly betty - MacBook, Windows, Netscape, and WordPress!











  • to debug scripts and css: define('SCRIPT_DEBUG', true);Syntax highlighting (codepress) was dropped in 2.8.1
  • to debug scripts and css: define('SCRIPT_DEBUG', true);Syntax highlighting (codepress) was dropped in 2.8.1
  • + register_widget
  • + register_widget
  • + register_widget
  • + register_widget
  • to debug scripts and css: define('SCRIPT_DEBUG', true);Syntax highlighting (codepress) was dropped in 2.8.1

  • + register_widget
  • to debug scripts and css: define('SCRIPT_DEBUG', true);Syntax highlighting (codepress) was dropped in 2.8.1
    Speed for css and js
  • Custom post types = not easy in 3.0
  • Custom post types = not easy in 3.0
  • Custom post types = not easy in 3.0
  • Custom post types = not easy in 3.0
  • Custom post types = not easy in 3.0

  • sip!















  • The best way to start theme development
  • The best way to start theme development
  • The best way to start theme development
  • The best way to start theme development
  • same for rtl.css
  • same for rtl.css




  • Versions I’ve personally contributed to.
  • Versions I’ve personally contributed to.
  • Versions I’ve personally contributed to.
  • Versions I’ve personally contributed to.
  • Versions I’ve personally contributed to.
  • Versions I’ve personally contributed to.
  • Versions I’ve personally contributed to.

  • subversion - version control system














  • Transcript

    • 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
    • 3. Hello!
    • 4. Features History http://www.flickr.com/photos/nostri-imago/
    • 5. 2.7
    • 6. 2.9
    • 7. 2.8
    • 8. 2.7
    • 9. 2.7
    • 10. 2.7 • Completely new interface
    • 11. 2.7 • Completely new interface • Comment threading
    • 12. 2.7 • Completely new interface • Comment threading • Plugin repository
    • 13. 2.7 • Completely new interface • Comment threading • Plugin repository • Child themes
    • 14. 2.7 • Completely new interface • Comment threading • Plugin repository • Child themes • Automatic upgrades
    • 15. 2.8
    • 16. 2.8 • Integrated theme repository
    • 17. 2.8 • Integrated theme repository • New widgets interface and API
    • 18. 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");'));
    • 19. Easy Widgets
    • 20. Easy Widgets
    • 21. 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 ) { } }
    • 22. 2.8 • Integrated theme repository • New widgets interface and API
    • 23. 2.8 • Integrated theme repository • New widgets interface and API • Better custom taxonomies
    • 24. Taxonomies function people_taxonomy() { register_taxonomy( 'people', 'post', array( 'hierarchical' => false, 'label' => '‫;) ) 'אנשים‬ } add_action( 'init', 'people_taxonomy', 0 );
    • 25. 2.8 • Integrated theme repository • New widgets interface and API • Better custom taxonomies
    • 26. 2.8 • Integrated theme repository • New widgets interface and API • Better custom taxonomies • Speed
    • 27. 2.9
    • 28. 2.9 • General Undo/Trash feature
    • 29. 2.9 • General Undo/Trash feature • Built in image editor
    • 30. 2.9 • General Undo/Trash feature • Built in image editor • Easier video embeds (oembed)
    • 31. 2.9 • General Undo/Trash feature • Built in image editor • Easier video embeds (oembed) • Custom post types
    • 32. 2.9 • General Undo/Trash feature • Built in image editor • Easier video embeds (oembed) • Custom post types • Post thumbnails
    • 33. Today we’ll talk about... Intro, WordPress developers meetup New features in recent versions 3.0 Getting involved with WordPress development Q&A
    • 34. 3.0 ZOMFG!!!1
    • 35. So, what’s in the bag? © Keren Segev, with permission
    • 36. Custom Backgrounds
    • 37. Backgrounds // functions.php add_custom_background();
    • 38. Headers
    • 39. 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 }
    • 40. 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' ) ) ) );
    • 41. <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> ?>
    • 42. Pluggable Comment form //comments.php comment_form();
    • 43. Navigation menu
    • 44. 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
    • 45. Custom Post Types
    • 46. Custom Post Types function post_type_reviews() { register_post_type('reviews', array( 'label' => '‫,'ביקורות‬ 'singular_label' => '‫,'ביקורת‬ 'description' => '‫,'ביקורות תוספים לוורדפרס‬ 'public' => true )); } add_action('init', 'post_type_reviews');
    • 47. 2010: A Theme Odyssey
    • 48. 2010: A Theme Odyssey
    • 49. 2010: A Theme Odyssey
    • 50. 2010 - The perfect example
    • 51. 2010 - The perfect example Showcase for 3.0 new features
    • 52. 2010 - The perfect example Showcase for 3.0 new features Complete, yet flexible
    • 53. 2010 - The perfect example Showcase for 3.0 new features Complete, yet flexible Internationalized and translation ready
    • 54. 2010 - The perfect example Showcase for 3.0 new features Complete, yet flexible Internationalized and translation ready Fully documented
    • 55. A parent for your child theme
    • 56. 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 */
    • 57. 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
    • 58. Multisite // wp-config.php define( 'WP_ALLOW_MULTISITE', true );
    • 59. 3.0
    • 60. • Custom Background / Header 3.0
    • 61. • Custom Background / Header 3.0 • Pluggable comment form
    • 62. • Custom Background / Header 3.0 • Pluggable comment form • Navigation menu
    • 63. • Custom Background / Header 3.0 • Pluggable comment form • Navigation menu • Custom post types
    • 64. • Custom Background / Header 3.0 • Pluggable comment form • Navigation menu • Custom post types • New default theme
    • 65. • Custom Background / Header 3.0 • Pluggable comment form • Navigation menu • Custom post types • New default theme • Multisite
    • 66. • Custom Background / Header 3.0 • Pluggable comment form • Navigation menu • Custom post types • New default theme • Multisite ...
    • 67. Today we’ll talk about... Intro, WordPress developers meetup New features in recent versions 3.0 Getting involved with WordPress development Q&A
    • 68. Don’t be afraid, use the trunk
    • 69. Staying connected http://www.flickr.com/photos/versageek/
    • 70. Average: 9 changesets a day
    • 71. 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/
    • 72. Contributing
    • 73. Contributing Testing Translating RTLizing etc...
    • 74. Q&A Matt Mullenweg
    • 75. Next time? Caching Security Buddypress UGC SEO SVN E-commerce Plugins 101
    • 76. Thank You!