Une #BuddyPress 1.7 theme story

Salut,
Aujourd’hui, j’ai aidé un ami qui, sur mes conseils, démarre un projet à l’aide de BuddyPress 1.7-beta 1. Tout s’est bien déroulé pour lui jusqu’au moment où, après avoir investi dans un thème premium BuddyPress, il s’est dirigé vers le menu Apparence de son administration WordPress pour l’ajouter puis l’installer. Et là, patatra :( Passé le header du frontend de son blog : « white content of death ! » Une erreur fatale interrompait la poursuite de l’affichage de son blog.

Il m’a donc contacté pour m’expliquer ses difficultés avec ce thème. Il était super contrarié d’avoir payé un thème dédié à BuddyPress sur le papier et qui une fois installé ne fonctionnait pas. Je le comprends.

Découverte du premier bug


Update !! : 2012/02/25, Boone vient de publier un billet sur le blog de dev de BuddyPress informant les concepteurs de thèmes « standalone » BuddyPress de la démarche à suivre pour éviter que BP Theme compat ne charge son mécanisme AJAX et sa feuille de style. Pour cela il suffit d’ajouter dans le functions.php du thème un support de BuddyPress en hookant after_setup_theme avec une priorité inférieure à 100. Exemple :

function bp_standalone_theme_setup() {

	add_theme_support( 'buddypress' );

}

add_action( 'after_setup_theme', 'bp_standalone_theme_setup', 10 );


Update !! : 2012/02/22, Boone vient de publier un ticket sur le trac de BuddyPress afin de trouver la meilleure solution pour gérer la difficulté observée ci-dessous. Génial !


Alors, je me suis lancé dans l’exploration du problème, j’avais ma petite idée déjà sur ce qui pouvait ne pas fonctionner. En effet la version 1.7 de BuddyPress intégrant de nouvelles fonctionnalités (BP Theme Compat) pour maximiser sa compatibilité avec la plupart des thèmes WordPress, elle vérifie avant d’utiliser ce mécanisme deux choses :

  • le thème actif est-il le thème embarqué historiquement par BuddyPress à savoir BP Default ?
  • le thème actif est-il un thème enfant de BP Default ?

Simplement, dans le cas du thème premium BuddyPress en question, il n’est ni BP Default ni un child thème de celui-ci. Ainsi BP Theme Compat pensant qu’il s’agit d’un thème WordPress charge ses mécanismes AJAX / JS et son style. Or comme le thème en question charge lui aussi des mécanismes identiques pour fournir ses fonctionnalités BuddyPress, eh bien on se retrouve avec un bug. Concrètement, on peut observer son apparition simplement en postant une nouvelle activité car elle sera ajoutée en double exemplaire. Logique : deux mécanismes chargés de faire la même opération la font deux fois.

Alors, la première bêta de la 1.7 n’ayant été mise sur orbite que depuis la semaine dernière, j’imagine que le concepteur du thème n’a pas encore eu le temps de se pencher sur la question. En même temps, si vous démarrez votre projet BuddyPress avec cette bêta, je vous propose de poursuivre malgré tout vos développements en ajoutant le cas échéant pour ce type de thème ce morceau de code à son fichier functions.php :

function quick_fix_bp_theme_not_1_7_ready() {
	
	remove_action( 'bp_after_setup_theme', 'bp_load_theme_functions', 1 );

}

add_action( 'after_setup_theme', 'quick_fix_bp_theme_not_1_7_ready', 9 );

 

Une fois que c’est fait, BP Theme Compat ne chargera plus ses mécanismes AJAX / JS ni son style. Toutefois, le problème de mon ami n’était pas résolu, il avait toujours son « white content of death » sous son header.

Découverte du 2ème bug


Update !! : 2012/02/23, J’ai pensé qu’il était intéressant de publier une nouvelle page dans le BuddyPress Codex à propos de la fonction bp_is_active. J’ai illustré d’exemples avec la plupart des composants.


En fait, lorsqu’on installe pour la première fois BuddyPress et qu’on choisit la version 1.7, tous les composants ne sont pas activés d’entrée. Seuls les composants des profils étendus et des activités le sont. C’est selon moi une bonne chose car cela permet de bien comprendre que BuddyPress est un plugin qui regroupe des composants modulables et activables selon les besoins de l’administrateur.

Le problème du thème en question est qu’il ajoute des contenus BuddyPress comme par exemple les derniers topics des forums de groupe, ou le nombre de messages privés reçu par le membre connecté sans vérifier que les forums de groupe ou la messagerie privée sont activés. Résultat : erreur fatale :(
Le souci est en plus amplifié dans la mesure où dans la version 1.7, il sera possible de motoriser les forums de groupe avec bbPress 2.3 (la prochaine version de bbPress).

Les composants activés par défaut dans la 1.7

Ainsi, il devient important pour les concepteurs de thèmes et les créateurs de plugins (je m’inclus notamment pour Bowe Codes) de ne pas oublier de vérifier que les composants dont nous souhaitons manipuler le contenu sont bien activés. Pour cela il suffit de tester la fonction bp_is_active( ‘nom_du_composant’ ) avant de lancer l’exécution de notre code comme l’illustre l’image ci-dessus.

Pour terminer, je suis convaincu que comme moi (car j’ai besoin de tester/adapter tous mes plugins sur/pour la 1.7, BP Checkins est déjà prêt), les concepteurs de ces thèmes premium (ou pas d’ailleurs) BuddyPress auront fait le nécessaire pour que les utilisateurs puissent profiter au mieux de cette fabuleuse 1.7 lorsqu’elle sera « released » !

15 réflexions au sujet de « Une #BuddyPress 1.7 theme story »

  1. Stéphane

    Yep !

    L’ami en question te remercie vivement pour ton intervention, sans la quelle je me serais retrouvé comme une andouille ! Là, je peux avancer tranquillement.

    Pour parler un peu de BP, la 1.7 Beta 1 promet de belles choses côté utilisateur et admin du site. Déjà, la possibilité de motoriser les forums des groupes via bbpress, ha mais enfin ! Voilà une idée qu’elle était attendu je crois bien.

    Ensuite, son intégration me semble plus naturelle dans le workflow de wp. Bon, tout n’est pas encore au point, par exemple, là, je suis en train de regarder vers les profils étendus. Côté admin, nickel, mais pas de répercussion sur le profil en front end, hum. Va falloir allez faire dans la doc de BP (qui au passage mériterait un coup de mieux).

    Enfin, côté thème, ouaip, j’étais un peu fâché. Lâcher 60$ pour économiser du temps (et donc de l’argent) et te retrouver avec un truc codé avec les pieds (menu en dur par exemple… paie ta misère), tu dis, le gars, il a pas finis le job. Je comprends qu’un thème pour bp soit actuellement plus compliquer à coder, mais tant qu’à faire, autant livrer un truc finis et soigné. Tout le monde n’a pas la chance d’avoir un « imath » à porté de mail (:

    En tout cas, le projet prend forme doucement, et je crois que je vais m’éclater !
    Encore merci m’sieur, et respect !

    Répondre
  2. Fabrice

    Salut Mathieu, Stéph

    Ahhhh chapeau bas iMath, sans toi le Stéphane mangeait son thème et le dév qui va avec ;)

    Toute la difficulté réside dans le choix du thème et de ses fonctionnalités, et de ce point de vue là difficile de ne pas se tromper surtout quand on ne peut pas l’essayer…

    Trouver des thèmes premium BP vraiment compatibles avec BP, arghhh c’est pas gagné, idée de topic sur BuddyPress France non ?

    Répondre
    1. Photo du profil de imathimath Auteur

      Merci Fabrice, la période est un peu particulière en fait, après réflexion je pense que d’ici à la sortie de la 1.7, la grande majorité des thèmes sera OK.
      Disposer d’un labo de test des thèmes serait effectivement une idée intéressante, le problème est financier je pense car il faudrait acheter les premium. To be continued !

      Répondre
  3. Kapil

    HI Imath,

    One of your fan from india. You are amazing. Whatever you do is awesome. I like your plugins.
    But i need your help if you can. I am working on making an encyclopedia based social network. I’m using bp and wp for that. I need something by which my groups can get updated automatically. I am talking about RSS/XML feeds, by which i can post automatic updates from external sources like google news in my groups activity streams. My great buddypress developer can you please help to create something like that. I badly needed this, Without this my project is good for nothing. I want to show encyclopedia in a way of social networking with social recomandation. I hope you’ll help me in making an open source encyclopedia based social network.

    Please help me, It is urgent. Please contact me on my email id. I will be thankful of you.

    Répondre
    1. Photo du profil de imathimath Auteur

      Hi Kapil,

      It’s an interesting project. Unfortunately, i’m really busy at the moment and i’m afraid i won’t be able to help you as you’re in an emergency. I can only give you a direction on how to achieve your goal, that’s what i’d have done and in a way did with BP Checkins. If you look at his source code, you’ll find a way to use WP Cron to regularly post activity updates thanks to my foursquare API Class and its interpretation of json 4sq API. You just need to copy some part of the code, adapt it to your needs, and to use the groups_record_activity() function with the right arguments (group_id…).

      Bye.

      Répondre
      1. Kapil

        Hi imath,
        Thanks for providing me a direction for making this plugin, but unfortunately i’m not able to make this plugin properly. I am requesting you please make this plugin as your next upcoming release. I am in emergency. but if you want some time so you take that but plz plz brother, i am requesting you please create it. I badly needed this. I want to do something for the mankind but, i am not able to make this type of plugin. That is why i’m requesting you please help me buddy.

        I hope you will not broke my heart. Please give some time in this plugin creation. See you always launch plugins within 3 to 4 weeks. So why do not try this plugin at this time.

        I will be always thankful of you. Please reply …..

        Répondre
        1. Photo du profil de imathimath Auteur

          I first need around a month to patch my BuddyPress plugins so that they behave the best way in the arriving 1.7 version. Then, if you haven’t found, i’ll look at it.
          Building plugins is a hobby, but to live i also need to work the day and find some time the night to sleep ;)

          Répondre
          1. Kapil

            Yes, You are right. I know that it is your hobby. Okay take your time but please also consider on this plugin creation when you willl free..
            I will comeback soon to ping you…
            Byee

  4. Pingback: Le meilleur du blogging sur 4H18

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>