extending buddypress – wordcamp milano 2011 [italian]
TRANSCRIPT
Extending BuddyPressPlugin & Temi
Francesco Laffi – WordCamp Milano – 27 Maggio 2011
Cos’è BuddyPress
BachecaProfili
Amicizie
Messaggi Privati
Gruppi
Forum (bbPress)
UtentiBlog
Commenti
Taxonomy
TemplatesPlugin API
Non un semplice plugin
-------------------------------------Lines of code WP 3.2b2 BP 1.2.8-------------------------------------PHP 102400 57363JS 23760 2810CSS 20955 5562HTML 1952 0XML 37 0-------------------------------------SUM: 149104 65735-------------------------------------
Extending BuddyPress
Componenti (plugins)
bp-custom.php (snippets)
Temi
Plugin per BuddyPress
• sono plugin per WP ma usano le API di BP (funzioni, azioni, filtri)
• eseguire il codice di BP solo dopo che viene caricato:
/* Only load code that needs BuddyPress to run once BP is loaded and initialized. */function my_plugin_init(){ require( dirname( __FILE__ ) . '/my-plugin.php' );}add_action( 'bp_include', 'my_plugin_init' );
Componentiexample.org/groups/my-group/forum/topic/test-topic/
example.org/members/francesco/messages/1/view
Accessibili tramite la variabile globale $bp
http://codex.buddypress.org/developer-docs/the-bp-global/
current_component
current_item current_action
action_variables
Struttura dei componenti
• Struttura standard
• Usata anche per le funzionalità base di BuddyPress
BP Skeleton Component
• Esempio di componente “high five”
• Buona base di partenza per componenti personalizzati
http://wordpress.org/extend/plugins/buddypress-skeleton-component/
Extending BuddyPress
Componenti (plugins)
bp-custom.php (snippets)
Temi
bp-custom.php
define('BP_FORUMS_SLUG', 'board');
function remove_xprofile_links(){ remove_filter('bp_get_the_profile_field_value', 'xprofile_filter_link_profile_data', 50, );}add_action('plugins_loaded', 'remove_xprofile_links');
• wp-content/plugins/bp-custom.php
• snippets di codice, piccole modifiche
• cambiare slug ai forum:
• rimuovere i link cliccabili dal profilo:
Extending BuddyPress
Componenti (plugins)
bp-custom.php (snippets)
Temi
bp-default theme
URL TemplateURL: example.org/members/francesco/messages/compose/
Template: bp-default/members/single/messages/compose.php
i “Loop”• The Activity Stream Loop / bp_has_activities()
• The Forum Topics Loop / bp_has_forum_topics()
• The Members Loop / bp_has_members()
• The Groups Loop / bp_has_groups()
• The Blogs Loop / bp_has_blogs()
• The Group Members Loop / bp_group_has_members()
• The Private Messages Loop / bp_has_message_threads()
• The Profile Data Loop / bp_has_profile()
http://codex.buddypress.org/developer-docs/custom-buddypress-loops/
Group Members Loop<?php if ( bp_group_has_members() ) : ?> <div id="member-count" class="pag-count"> <?php bp_group_member_pagination_count() ?> </div> <div id="member-pagination" class="pagination-links"> <?php bp_group_member_pagination() ?> </div> <ul id="member-list" class="item-list"> <?php while ( bp_group_members() ) : bp_group_the_member(); ?> <li> <!-- Example template tags you can use --> <?php bp_group_member_avatar() ?> <?php bp_group_member_link() ?> <?php bp_group_member_joined_since() ?> </li> <?php endwhile; ?> </ul><?php else: ?> <div id="message" class="info"> <p>This group has no members.</p> </div><?php endif;?>
Temi personalizzati
• bp-default child theme
• si aggiorna con buddypress
•WP->BP: BuddyPress Template Pack http://wordpress.org/extend/plugins/bp-template-pack/
Risorse
• BP Codex: http://codex.buddypress.org/home/
• Forums: http://buddypress.org/community/groups/creating-extending/forum/
• IRC: #buddypress-dev su Freenode
• BP Dev Blog: http://bpdevel.wordpress.com/
• PHPXref e Doxygen
• Trac: http://buddypress.trac.wordpress.org/
Q&AFrancesco Laffi
twitter.com/francescolaffihttp://flweb.it