Share this in your BuddyPress activity stream!

Publié le

par

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 😉 .