Successfully reported this slideshow.

You Got Your WordPress in my Facebook: Developing WPBook

0

Share

Upcoming SlideShare
Les TIC al Sàhara
Les TIC al Sàhara
Loading in …3
×
1 of 21
1 of 21

You Got Your WordPress in my Facebook: Developing WPBook

0

Share

Download to read offline

Description

Introduction to the WPBook plugin for WordCamp NYC.

Focuses on the hooks behind the core functions

Transcript

  1. 1. You Got Your WordPress in My Facebook! Developing WPBook. <br />14th November 2009<br />WordCamp NYC<br />John Eckman<br />http://www.openparenthesis.org/<br />@jeckman<br />Check out http://2010.boston.wordcamp.org/ <br />
  2. 2. What WPBook Does<br />WPBook is a plugin which exposes a view of your self-hosted WordPress blog as a Facebook Application. <br />Overview<br />
  3. 3. Same blog, inside and outside Facebook<br />Overview<br />http://www.openparenthesis.org/<br />http://apps.facebook.com/openparenthesis/<br />
  4. 4. Facebook Features<br />Overview<br />
  5. 5. Facebook features<br />Overview<br />
  6. 6. Setting Up WPBook<br />Install WPBookPlugin<br />http://wordpress.org/extend/plugins/wpbook/<br />Activate as usual<br />Create a Facebook Application<br />Requires Facebook Developer application<br />Get ‘api key’ and ‘secret’<br />Set callback url<br />Set iFrame, resizeable<br />Configure WPBook Options<br />Allow comments<br />Require email address<br />Add to Profile button<br />Invite friends link<br />“Share” button<br />External site link<br />Give credit<br />Advanced Options<br />Custom header/footer for each post<br />Overview<br />
  7. 7. WPBook<br />How does it work?<br />
  8. 8. Check for Facebook<br />function check_facebook() {<br /> if (!isset($_SERVER[&quot;HTTP_USER_AGENT&quot;])) <br /> return false;<br /> if (isset($_GET[&apos;fb_sig_in_iframe&apos;]) || isset($_GET[&apos;fb_force_mode&apos;])) <br /> return true;<br />return false;<br />}<br />if (check_facebook()) {<br />add_filter(&apos;template_directory&apos;, &apos;wpbook_template_directory&apos;);<br />add_filter(&apos;theme_root&apos;, &apos;wpbook_theme_root&apos;); <br />add_filter(&apos;theme_root_uri&apos;, &apos;wpbook_theme_root_uri&apos;);<br />}<br />Core Functions / Hooks<br />
  9. 9. Theme Filter<br />function wpbook_theme_root($path) {<br /> $theme_root = dirname(__FILE__);<br /> if (check_facebook())<br /> return $theme_root . &apos;/theme&apos;; <br /> else<br /> return $path;<br />}<br />function wpbook_theme_root_uri($url) {<br /> if (check_facebook()) {<br /> $dir = get_bloginfo(&apos;wpurl&apos;) .&quot;/wp-content/plugins/wpbook/theme&quot;;<br /> return $dir;<br /> } else<br /> return $url;<br />}<br />Core Functions / Hooks<br />
  10. 10. Filter Permalinks<br />function fb_filter_postlink($postlink) {<br /> if (check_facebook()) {<br />$my_offset = strlen(get_option(&apos;home&apos;));<br /> $my_options = wpbook_getAdminOptions();<br /> $app_url = $my_options[&apos;fb_app_url&apos;];<br /> $my_link = &apos;http://apps.facebook.com/’<br /> . $app_url . substr($postlink,$my_offset); <br /> return $my_link;<br /> } else {<br /> return $postlink; <br /> }<br />}<br />Core Functions / Hooks<br />
  11. 11. Update Profile Boxes<br />function wp_update_profile_boxes() { <br />if(!class_exists(&apos;FacebookRestClient&apos;)) {<br />include_once(ABSPATH.&apos;wp-content/plugins/wpbook/client/facebook.php&apos;); <br /> }<br />. . .<br /> $api_key = $wpbookAdminOptions[&apos;fb_api_key&apos;];<br /> $secret = $wpbookAdminOptions[&apos;fb_secret&apos;];<br />$facebook = new Facebook($api_key, $secret);<br /> $ProfileContent = &apos;&lt;h3&gt;Recent posts&lt;/h3&gt;&lt;div class=&apos;<br /> . &apos;&quot;wpbook_recent_posts&quot;&gt;&apos; . &apos;&lt;ul&gt;&apos; .<br /> . wpbook_profile_recent_posts(5) . &apos;&lt;/ul&gt;&lt;/div&gt;&apos;; <br />// this call just updates the RefHandle, set for the user profile <br /> $facebook-&gt;api_client-&gt;call_method(&apos;facebook.Fbml.setRefHandle&apos;, array(&apos;handle&apos; =&gt; &apos;recent_posts&apos;, &apos;fbml&apos; =&gt; $ProfileContent,) );<br />}<br />Core Functions / Hooks<br />
  12. 12. WPBook<br />What about the Facebook stuff?<br />
  13. 13. Share on Facebook button<br />if($enable_share == &quot;true&quot;){<br /> echo &apos;&lt;span class=&quot;wpbook_share_button”&gt;&apos;;<br /> echo &apos;&lt;a onclick=&quot;window.open(amp;apos;http://www.facebook.com/sharer.php?s=100&amp;p[title]=&apos;; <br /> echo urlencode(get_the_title()); <br /> echo &apos;&amp;p[summary]=&apos;; <br /> echo urlencode(get_the_excerpt()); <br /> echo &apos;&amp;p[url]=&apos;; <br /> echo urlencode(get_permalink()); <br /> echo &quot;&apos;,&apos;sharer&apos;,&apos;toolbar=0,status=0,width=626,height=436&apos;); return false;amp;quot;&quot;; <br /> echo &apos; class=&quot;share&quot; title=&quot;Send this to friends or post it on your profile.&quot;&gt;Share This Post&lt;/a&gt;’;<br /> echo &apos;&lt;/span&gt;’; <br />}<br />Facebook<br />
  14. 14. Invite Friends<br />if($invite_friends == &quot;true&quot;){<br /> $invite_link = &apos;&lt;a href=&quot;http://apps.facebook.com/&apos; <br /> . $app_url .&apos;/index.php?is_invite=true&fb_force_mode=fbml&quot; class=&quot;share&quot;&gt; Invite Friends&lt;/a&gt;&apos;;<br /> echo &apos;&lt;div style=&quot;float:right; &quot;&gt;&apos;;<br /> echo &apos;&lt;span class=&quot;wpbook_invite_button&quot;&gt;&apos;;<br />echo(&quot;$invite_link&quot;);<br /> echo &apos;&lt;/span&gt;&lt;/div&gt;&apos;;<br />}<br />(This just redirects user back to index.php with:<br />is_invite = true<br />force_mode = fbml )<br />Facebook Key Features<br />
  15. 15. Invite Friends, Cont’d<br />&lt;fb:fbml&gt;<br />&lt;fb:title&gt;Invite Friends&lt;/fb:title&gt;<br />&lt;fb:request-form <br /> action=&quot;http://apps.facebook.com/&lt;?php echo $app_url ?&gt;&quot; <br /> method=&quot;post&quot; type=&quot;&lt;? echo $app_name; ?&gt;&quot; <br /> content=&quot;&lt;? echo htmlentities($content); ?&gt;&quot; <br /> image=&quot;&lt;? echo $app_image; ?&gt;&quot;&gt;<br />&lt;fb:multi-friend-selector actiontext=&quot;Here are your friends who don&apos;t have &lt;? echo $app_name; ?&gt; yet. Invite all you want - it&apos;s free!&quot;exclude_ids=&quot;&lt;? echo $friends; ?&gt;&quot; bypass=&quot;cancel&quot; /&gt;&lt;/fb:request-form&gt; &lt;/fb:fbml&gt;<br />When index.php in /theme/ is loaded:<br />If “is_invite” is set, AND $_POST[“ids”] is set, show thank you message<br />If “is_invite” is set, but $_POST[“ids”] is empty, show the add friends form<br />First get set of friends who already have the app, and exclude them in form<br />If “is_invite” is not set, we’re just on the blog home page<br />(see wpbook/theme/index.php for detailed version)<br />Facebook Features<br />
  16. 16. Add to Profile<br />In HTML page (theme):<br />&lt;div id=&quot;addProfileButton&quot;&gt;&lt;/div&gt;<br />Plus Javascript from Facebook:<br />&lt;script type=&quot;text/javascript&quot;&gt;<br />FB_RequireFeatures([&quot;XFBML&quot;],function() {<br />FB.Facebook.init(&apos;&lt;?php echo $api_key; ?&gt;&apos;,<br /> &apos;&lt;?php echo $receiver_url; ?&gt;&apos;,null);<br />FB.Connect.showAddSectionButton(&apos;profile&apos;,<br />document.getElementById(&apos;addProfileButton&apos;));<br /> }); <br />&lt;/script&gt;<br />&lt;script type=&quot;text/javascript&quot;&gt;<br />FB_RequireFeatures([&quot;CanvasUtil&quot;], function() {<br />FB.FBDebug.isEnabled=true;<br />FB.FBDebug.logLevel = 4;<br />FB.XdComm.Server.init(&quot;&lt;?php echo $receiver_url; ?&gt;&quot;); FB.CanvasClient.startTimerToSizeToContent(); <br /> }<br /> );&lt;/script&gt;<br />Facebook Features<br />Facebookjavascript loads and replaces the div with id of addProfileButton with a styled &quot;Add to Profile&quot; button. <br />It also resizes the iFrame to avoid the scroll bar – if the iFrame is set to resizable in FB settings<br />
  17. 17. Add to Profile, Cont&apos;d<br />$ProfileContent = &apos;&lt;h3&gt;Recent posts&lt;/h3&gt;&apos;<br /> . &lt;div class=&quot;wpbook_recent_posts&quot;&gt;&apos;<br /> . &apos;&lt;ul&gt;&apos; . wpbook_profile_recent_posts(5) . &apos;&lt;/ul&gt;&lt;/div&gt;&apos;;<br />$facebook-&gt;api_client-&gt;call_method(<br /> &apos;facebook.Fbml.setRefHandle&apos;,array(<br /> &apos;handle&apos; =&gt; &apos;recent_posts&apos;, &apos;fbml&apos; =&gt; $ProfileContent,<br /> )<br /> );<br />$facebook-&gt;api_client-&gt;call_method(<br /> &apos;facebook.profile.setFBML&apos;,array(<br /> &apos;uid&apos; =&gt; $user_id,<br /> &apos;profile&apos; =&gt; &apos;&lt;fb:wide&gt;&lt;fb:ref handle=&quot;recent_posts&quot; /&gt;&lt;/fb:wide&gt;<br />&lt;fb:narrow&gt;&lt;fb:ref handle=&quot;recent_posts&quot; /&gt;&lt;/fb:narrow&gt;&apos;,<br /> &apos;profile_main&apos; =&gt; &apos;&lt;fb:ref handle=&quot;recent_posts&quot; /&gt;&apos;<br /> )<br />);<br />Facebook Features<br />
  18. 18. View on Blog<br />&lt;span class=&quot;wpbook_external_post&quot;&gt;<br />&lt;?php<br />$permalink_peices = parse_url(get_permalink());<br />$permalink_app_url = &quot;/&quot;.$app_url;<br />$external_post_permalink = <br />str_replace_once($permalink_app_url,&quot;&quot;,$permalink_peices[path]);<br />$external_site_url_peices = parse_url(get_bloginfo(&apos;wpurl&apos;));<br />$external_site_url = $external_site_url_peices[host];<br />$exteral_post_url = get_bloginfo(&apos;wpurl&apos;).$external_post_permalink;<br />echo &quot;&lt;a href=&apos;$exteral_post_url&apos; title=&apos;View this post on the web at $external_site_url&apos;&gt;View post on $external_site_url&lt;/a&gt;&quot;; ?&gt;<br />&lt;/span&gt;<br />Facebook Features<br />
  19. 19. Roadmap<br />Fix What’s Broken<br />Require PHP5, eliminate potential for uncaught exceptions<br />Eliminate hard-coded wp-content directory, assumption about plugin files location<br />http://willnorris.com/2009/05/wordpress-plugin-pet-peeve-hardcoding-wp-content/<br />http://willnorris.com/2009/06/wordpress-plugin-pet-peeve-2-direct-calls-to-plugin-files<br />Fix bug on invite friends outside home page<br />Better Respect WordPressconfiguration(s)<br />Better handle custom home pages, subdirectories<br />Better handle pages,not just posts<br />Threaded comments (if enabled in blog)<br />Theme customization (in Facebook)<br />Enable sidebars, widgets<br />List pages / navigation<br />Allow theme selection / avoid overwriting theme on updates<br />More Facebook features<br />Post to [author’s | user’s] wall / notifications on new blog post<br />Publish to comment author’s news feed on comment<br />Get email addresses from comment authors via Facebook permissions<br />
  20. 20. Thanks<br />WPBook was originally created by Dave Lester as part of the ScholarPress project. (He&apos;s here speaking at WordCamp NYC)<br />Brooke Dukes has also contributed significantly to WPBook. Unfortunately, she&apos;s not here speaking (as far as I know).<br />Many WPBook users have helped with bug reports / patches, suggestions, and testing.<br />
  21. 21. WPBook<br />Q & A<br />Plugin: http://wordpress.org/extend/plugins/wpbook/<br />Blog: http://www.openparenthesis.org/<br />In FB: http://apps.facebook.com/openparenthesis/<br />Twitter: @jeckman<br />Check out http://2010.boston.wordcamp.org/ <br />

Editor's Notes

Description

Introduction to the WPBook plugin for WordCamp NYC.

Focuses on the hooks behind the core functions

Transcript

  1. 1. You Got Your WordPress in My Facebook! Developing WPBook. <br />14th November 2009<br />WordCamp NYC<br />John Eckman<br />http://www.openparenthesis.org/<br />@jeckman<br />Check out http://2010.boston.wordcamp.org/ <br />
  2. 2. What WPBook Does<br />WPBook is a plugin which exposes a view of your self-hosted WordPress blog as a Facebook Application. <br />Overview<br />
  3. 3. Same blog, inside and outside Facebook<br />Overview<br />http://www.openparenthesis.org/<br />http://apps.facebook.com/openparenthesis/<br />
  4. 4. Facebook Features<br />Overview<br />
  5. 5. Facebook features<br />Overview<br />
  6. 6. Setting Up WPBook<br />Install WPBookPlugin<br />http://wordpress.org/extend/plugins/wpbook/<br />Activate as usual<br />Create a Facebook Application<br />Requires Facebook Developer application<br />Get ‘api key’ and ‘secret’<br />Set callback url<br />Set iFrame, resizeable<br />Configure WPBook Options<br />Allow comments<br />Require email address<br />Add to Profile button<br />Invite friends link<br />“Share” button<br />External site link<br />Give credit<br />Advanced Options<br />Custom header/footer for each post<br />Overview<br />
  7. 7. WPBook<br />How does it work?<br />
  8. 8. Check for Facebook<br />function check_facebook() {<br /> if (!isset($_SERVER[&quot;HTTP_USER_AGENT&quot;])) <br /> return false;<br /> if (isset($_GET[&apos;fb_sig_in_iframe&apos;]) || isset($_GET[&apos;fb_force_mode&apos;])) <br /> return true;<br />return false;<br />}<br />if (check_facebook()) {<br />add_filter(&apos;template_directory&apos;, &apos;wpbook_template_directory&apos;);<br />add_filter(&apos;theme_root&apos;, &apos;wpbook_theme_root&apos;); <br />add_filter(&apos;theme_root_uri&apos;, &apos;wpbook_theme_root_uri&apos;);<br />}<br />Core Functions / Hooks<br />
  9. 9. Theme Filter<br />function wpbook_theme_root($path) {<br /> $theme_root = dirname(__FILE__);<br /> if (check_facebook())<br /> return $theme_root . &apos;/theme&apos;; <br /> else<br /> return $path;<br />}<br />function wpbook_theme_root_uri($url) {<br /> if (check_facebook()) {<br /> $dir = get_bloginfo(&apos;wpurl&apos;) .&quot;/wp-content/plugins/wpbook/theme&quot;;<br /> return $dir;<br /> } else<br /> return $url;<br />}<br />Core Functions / Hooks<br />
  10. 10. Filter Permalinks<br />function fb_filter_postlink($postlink) {<br /> if (check_facebook()) {<br />$my_offset = strlen(get_option(&apos;home&apos;));<br /> $my_options = wpbook_getAdminOptions();<br /> $app_url = $my_options[&apos;fb_app_url&apos;];<br /> $my_link = &apos;http://apps.facebook.com/’<br /> . $app_url . substr($postlink,$my_offset); <br /> return $my_link;<br /> } else {<br /> return $postlink; <br /> }<br />}<br />Core Functions / Hooks<br />
  11. 11. Update Profile Boxes<br />function wp_update_profile_boxes() { <br />if(!class_exists(&apos;FacebookRestClient&apos;)) {<br />include_once(ABSPATH.&apos;wp-content/plugins/wpbook/client/facebook.php&apos;); <br /> }<br />. . .<br /> $api_key = $wpbookAdminOptions[&apos;fb_api_key&apos;];<br /> $secret = $wpbookAdminOptions[&apos;fb_secret&apos;];<br />$facebook = new Facebook($api_key, $secret);<br /> $ProfileContent = &apos;&lt;h3&gt;Recent posts&lt;/h3&gt;&lt;div class=&apos;<br /> . &apos;&quot;wpbook_recent_posts&quot;&gt;&apos; . &apos;&lt;ul&gt;&apos; .<br /> . wpbook_profile_recent_posts(5) . &apos;&lt;/ul&gt;&lt;/div&gt;&apos;; <br />// this call just updates the RefHandle, set for the user profile <br /> $facebook-&gt;api_client-&gt;call_method(&apos;facebook.Fbml.setRefHandle&apos;, array(&apos;handle&apos; =&gt; &apos;recent_posts&apos;, &apos;fbml&apos; =&gt; $ProfileContent,) );<br />}<br />Core Functions / Hooks<br />
  12. 12. WPBook<br />What about the Facebook stuff?<br />
  13. 13. Share on Facebook button<br />if($enable_share == &quot;true&quot;){<br /> echo &apos;&lt;span class=&quot;wpbook_share_button”&gt;&apos;;<br /> echo &apos;&lt;a onclick=&quot;window.open(amp;apos;http://www.facebook.com/sharer.php?s=100&amp;p[title]=&apos;; <br /> echo urlencode(get_the_title()); <br /> echo &apos;&amp;p[summary]=&apos;; <br /> echo urlencode(get_the_excerpt()); <br /> echo &apos;&amp;p[url]=&apos;; <br /> echo urlencode(get_permalink()); <br /> echo &quot;&apos;,&apos;sharer&apos;,&apos;toolbar=0,status=0,width=626,height=436&apos;); return false;amp;quot;&quot;; <br /> echo &apos; class=&quot;share&quot; title=&quot;Send this to friends or post it on your profile.&quot;&gt;Share This Post&lt;/a&gt;’;<br /> echo &apos;&lt;/span&gt;’; <br />}<br />Facebook<br />
  14. 14. Invite Friends<br />if($invite_friends == &quot;true&quot;){<br /> $invite_link = &apos;&lt;a href=&quot;http://apps.facebook.com/&apos; <br /> . $app_url .&apos;/index.php?is_invite=true&fb_force_mode=fbml&quot; class=&quot;share&quot;&gt; Invite Friends&lt;/a&gt;&apos;;<br /> echo &apos;&lt;div style=&quot;float:right; &quot;&gt;&apos;;<br /> echo &apos;&lt;span class=&quot;wpbook_invite_button&quot;&gt;&apos;;<br />echo(&quot;$invite_link&quot;);<br /> echo &apos;&lt;/span&gt;&lt;/div&gt;&apos;;<br />}<br />(This just redirects user back to index.php with:<br />is_invite = true<br />force_mode = fbml )<br />Facebook Key Features<br />
  15. 15. Invite Friends, Cont’d<br />&lt;fb:fbml&gt;<br />&lt;fb:title&gt;Invite Friends&lt;/fb:title&gt;<br />&lt;fb:request-form <br /> action=&quot;http://apps.facebook.com/&lt;?php echo $app_url ?&gt;&quot; <br /> method=&quot;post&quot; type=&quot;&lt;? echo $app_name; ?&gt;&quot; <br /> content=&quot;&lt;? echo htmlentities($content); ?&gt;&quot; <br /> image=&quot;&lt;? echo $app_image; ?&gt;&quot;&gt;<br />&lt;fb:multi-friend-selector actiontext=&quot;Here are your friends who don&apos;t have &lt;? echo $app_name; ?&gt; yet. Invite all you want - it&apos;s free!&quot;exclude_ids=&quot;&lt;? echo $friends; ?&gt;&quot; bypass=&quot;cancel&quot; /&gt;&lt;/fb:request-form&gt; &lt;/fb:fbml&gt;<br />When index.php in /theme/ is loaded:<br />If “is_invite” is set, AND $_POST[“ids”] is set, show thank you message<br />If “is_invite” is set, but $_POST[“ids”] is empty, show the add friends form<br />First get set of friends who already have the app, and exclude them in form<br />If “is_invite” is not set, we’re just on the blog home page<br />(see wpbook/theme/index.php for detailed version)<br />Facebook Features<br />
  16. 16. Add to Profile<br />In HTML page (theme):<br />&lt;div id=&quot;addProfileButton&quot;&gt;&lt;/div&gt;<br />Plus Javascript from Facebook:<br />&lt;script type=&quot;text/javascript&quot;&gt;<br />FB_RequireFeatures([&quot;XFBML&quot;],function() {<br />FB.Facebook.init(&apos;&lt;?php echo $api_key; ?&gt;&apos;,<br /> &apos;&lt;?php echo $receiver_url; ?&gt;&apos;,null);<br />FB.Connect.showAddSectionButton(&apos;profile&apos;,<br />document.getElementById(&apos;addProfileButton&apos;));<br /> }); <br />&lt;/script&gt;<br />&lt;script type=&quot;text/javascript&quot;&gt;<br />FB_RequireFeatures([&quot;CanvasUtil&quot;], function() {<br />FB.FBDebug.isEnabled=true;<br />FB.FBDebug.logLevel = 4;<br />FB.XdComm.Server.init(&quot;&lt;?php echo $receiver_url; ?&gt;&quot;); FB.CanvasClient.startTimerToSizeToContent(); <br /> }<br /> );&lt;/script&gt;<br />Facebook Features<br />Facebookjavascript loads and replaces the div with id of addProfileButton with a styled &quot;Add to Profile&quot; button. <br />It also resizes the iFrame to avoid the scroll bar – if the iFrame is set to resizable in FB settings<br />
  17. 17. Add to Profile, Cont&apos;d<br />$ProfileContent = &apos;&lt;h3&gt;Recent posts&lt;/h3&gt;&apos;<br /> . &lt;div class=&quot;wpbook_recent_posts&quot;&gt;&apos;<br /> . &apos;&lt;ul&gt;&apos; . wpbook_profile_recent_posts(5) . &apos;&lt;/ul&gt;&lt;/div&gt;&apos;;<br />$facebook-&gt;api_client-&gt;call_method(<br /> &apos;facebook.Fbml.setRefHandle&apos;,array(<br /> &apos;handle&apos; =&gt; &apos;recent_posts&apos;, &apos;fbml&apos; =&gt; $ProfileContent,<br /> )<br /> );<br />$facebook-&gt;api_client-&gt;call_method(<br /> &apos;facebook.profile.setFBML&apos;,array(<br /> &apos;uid&apos; =&gt; $user_id,<br /> &apos;profile&apos; =&gt; &apos;&lt;fb:wide&gt;&lt;fb:ref handle=&quot;recent_posts&quot; /&gt;&lt;/fb:wide&gt;<br />&lt;fb:narrow&gt;&lt;fb:ref handle=&quot;recent_posts&quot; /&gt;&lt;/fb:narrow&gt;&apos;,<br /> &apos;profile_main&apos; =&gt; &apos;&lt;fb:ref handle=&quot;recent_posts&quot; /&gt;&apos;<br /> )<br />);<br />Facebook Features<br />
  18. 18. View on Blog<br />&lt;span class=&quot;wpbook_external_post&quot;&gt;<br />&lt;?php<br />$permalink_peices = parse_url(get_permalink());<br />$permalink_app_url = &quot;/&quot;.$app_url;<br />$external_post_permalink = <br />str_replace_once($permalink_app_url,&quot;&quot;,$permalink_peices[path]);<br />$external_site_url_peices = parse_url(get_bloginfo(&apos;wpurl&apos;));<br />$external_site_url = $external_site_url_peices[host];<br />$exteral_post_url = get_bloginfo(&apos;wpurl&apos;).$external_post_permalink;<br />echo &quot;&lt;a href=&apos;$exteral_post_url&apos; title=&apos;View this post on the web at $external_site_url&apos;&gt;View post on $external_site_url&lt;/a&gt;&quot;; ?&gt;<br />&lt;/span&gt;<br />Facebook Features<br />
  19. 19. Roadmap<br />Fix What’s Broken<br />Require PHP5, eliminate potential for uncaught exceptions<br />Eliminate hard-coded wp-content directory, assumption about plugin files location<br />http://willnorris.com/2009/05/wordpress-plugin-pet-peeve-hardcoding-wp-content/<br />http://willnorris.com/2009/06/wordpress-plugin-pet-peeve-2-direct-calls-to-plugin-files<br />Fix bug on invite friends outside home page<br />Better Respect WordPressconfiguration(s)<br />Better handle custom home pages, subdirectories<br />Better handle pages,not just posts<br />Threaded comments (if enabled in blog)<br />Theme customization (in Facebook)<br />Enable sidebars, widgets<br />List pages / navigation<br />Allow theme selection / avoid overwriting theme on updates<br />More Facebook features<br />Post to [author’s | user’s] wall / notifications on new blog post<br />Publish to comment author’s news feed on comment<br />Get email addresses from comment authors via Facebook permissions<br />
  20. 20. Thanks<br />WPBook was originally created by Dave Lester as part of the ScholarPress project. (He&apos;s here speaking at WordCamp NYC)<br />Brooke Dukes has also contributed significantly to WPBook. Unfortunately, she&apos;s not here speaking (as far as I know).<br />Many WPBook users have helped with bug reports / patches, suggestions, and testing.<br />
  21. 21. WPBook<br />Q & A<br />Plugin: http://wordpress.org/extend/plugins/wpbook/<br />Blog: http://www.openparenthesis.org/<br />In FB: http://apps.facebook.com/openparenthesis/<br />Twitter: @jeckman<br />Check out http://2010.boston.wordcamp.org/ <br />

Editor's Notes

More Related Content

Related Books

Free with a 30 day trial from Scribd

See all

×