Share this in your BuddyPress activity stream!

Crédits Photo share your ideas by Britta Bohlinger

Toujours √† fond dans la refonte de mon Intranet, Site qui s’appuiera sur l’excellent Tandem WordPress (en mode network) et BuddyPress.. Aujourd’hui je vous propose d’ajouter une fonctionnalit√© de partage d’article des blogs √† la quasi seule option qu’on a dans un tel environnement : l’email !

Pour cela le ¬ę¬†directory Activity¬†¬Ľ de BuddyPress est notre ami ūüôā Car en effet, les membres sont √† m√™me d’ajouter des activit√©s d’eux m√™me dans la textarea ¬ę¬†What’s new $current_user->display_name ?¬†¬Ľ

La what’s new text area.

1/ Tweak du fichier post-form.php

Grand principe devant l’√©ternel : utiliser un child theme de BP-default pour apporter nos modifications aux templates (ce child theme sera √† mettre dans le r√©pertoire themes de wordpress, of course !). Ci-dessous un aper√ßu du r√©pertoire bp-default du plugin BuddyPress :

Les templates activities

L’id√©e est donc de cr√©er un r√©pertoire activity dans notre child theme et d’y copier post-form.php pour y apporter la modification qui permettra de rendre le partage d’article possible. On se retrouve donc avec ce type d’organisation :

On reproduit le dossier activity pour y insérer le template post-form.php

Ok, maintenant on peut √©diter le fichier post-form.php, √† la ligne 27 on retrouve notre cible : la textarea ¬ę¬†whats-new¬†¬Ľ. Il s’agit tout simplement d’ajouter le code que j’ai encadr√© de commentaires html

<textarea name="whats-new" id="whats-new" cols="50" rows="10">
    <?php if ( isset( $_GET['r'] ) ) : ?>@<?php echo esc_attr( $_GET['r'] ) ?> <?php endif; ?>
    <!-- debut du tweak -->
    <?php if ( isset( $_GET['status'] ) ) : 
        echo esc_attr( $_GET['status'] )
        
        endif; ?>
    <!-- fin du tweak -->
</textarea>

Voil√†, d√©sormais il s’agira d’ajouter un querystring √† l’url qui m√®ne jusqu’au ¬ę¬†directory Activity¬†¬Ľ du type ?status=titre blog post – lien blog post

Let’s make some magic happen thks to functions.php !

Dans le fichier functions.php du child theme il s’agit tout simplement de rajouter une fonction qui ajoutera du contenu √† la fonction the_content() :

<?php
function imath_share_in_activity( $content = '' ) {
    if ( is_single() ) {
        global $post;
        
        //Si on utilise WordPress en mode network, il faut récupérer l'url du site principal.
        if ( function_exists( 'get_blog_option' ) ) {
            $url = get_blog_option( '1','siteurl' ). '/' .BP_ACTIVITY_SLUG;
        } else {
            $url = site_url() . '/' . BP_ACTIVITY_SLUG;
        }
        
        $content.= '<p>Share this in your <a href="'.$url.'/?status=' . get_the_title( $post->ID ) . '%20-%20'. get_permalink( $post->ID ) .'" target="_blank">activity stream</a> !</p>';
    }
    
    return $content;
}
add_filter ( 'the_content', 'imath_share_in_activity' );

Et voil√†, d√©sormais lorsque l’article sera affich√© depuis le single.php template, un lien lui sera rajout√© sous son contenu proposant de le partager dans le ¬ę¬†mur¬†¬Ľ d’activit√© de BuddyPress. Suite √† son click on obtiendra donc le r√©sultat suivant :

 Tada!

Dans la barre d’url on retrouve bien notre querystring permettant de personnaliser le contenu de la textarea. L’utilisateur n’a plus qu’√† rajouter un texte √©ventuel et √† cliquer sur le bouton Post Update.

NB : Pour faire profiter des blogs fils de cette fonction, id√©alement, il s’agit de transformer ce bout de code en plugin et de l’activer sur le r√©seau. Une autre mani√®re de faire consiste √† rajouter dans le fichier functions.php des th√®mes que vous mettez √† disposition des admins de blogs cette fameuse fonction ūüėČ .