Développement de thèmes BuddyPress - Partie 1 API et boucles BuddyPress

Le mois dernier, nous avons examiné les bases de Presse copain et comment vous pouvez l'utiliser pour augmenter le réseautage social dans vos projets. La réponse a été excellente et beaucoup ont demandé des tutoriels sur la thématique. Ainsi, dans cette série en trois parties, nous expliquerons quelques éléments essentiels de l’API de BuddyPress et expliquerons comment créer un thème enfant personnalisé qui survivra à BuddyPress et à WordPress mises à jour.


Avec de plus en plus de clients à la recherche de réseaux sociaux, nous avons passé en revue les bases de BuddyPress et l'impact qu'il peut avoir sur vos projets. Nous souhaitons à présent nous intéresser au développement de thèmes enfants adaptés à vos besoins et qui résisteront aux mises à jour de BuddyPress et WordPress. Récemment, j'ai recherché dans le référentiel de thèmes des thèmes compatibles avec BuddyPress et 19 résultats ont été obtenus! Inutile de dire que ce marché pourrait utiliser certains pays en développement. Bien qu'il existe des plug-ins capables de rendre vos thèmes compatibles avec BuddyPress, je suis toujours un partisan de la compréhension de la manière de faire quelque chose vous-même et de ne pas compter entièrement sur les plugins. De plus, créer un thème enfant de base est un processus simple, et intéressant d'apprendre si vous envisagez de développer avec BuddyPress.

Qu'allons nous faire

Dans ce didacticiel, je vais vous présenter les principaux éléments de l'API BuddyPress et les étapes de base permettant de créer un thème enfant BuddyPress personnalisé. A la fin de ce tutoriel, vous devriez être capable de comprendre:

  • Comment utiliser les balises de template BuddyPress
  • Comment reconnaître et personnaliser les boucles BuddyPress
  • Comment utiliser les conditionnelles BuddyPress dans vos thèmes
  • Comment créer et éditer un thème enfant BuddyPress de base

Ce tutoriel jettera les bases des deux prochaines parties, qui contiendront des techniques plus détaillées pour travailler avec des éléments spécifiques dans BuddyPress, tels que des groupes et des forums..


Commencer avec l'API BuddyPress

Si vous travaillez avec WordPress, vous savez alors qu'il est important de comprendre comment utiliser ses fonctions, actions, liens et filtres spécifiques. Vous avez également compris que lorsque vous comprenez mieux ces choses, vos projets vont plus vite et vous pouvez vous plonger plus complètement dans la personnalisation des thèmes et des plugins. Il n'y a rien de différent avec BuddyPress.

Je souhaite d’abord vous présenter quelques éléments clés de l’API BuddyPress: balises de modèle, boucles et conditions. J'espère que lorsque nous explorerons ces éléments et comment créer un thème enfant, vous pourrez utiliser ce qui est écrit ici et l'appliquer pour créer vos propres thèmes enfants BuddyPress..

Travailler avec les balises de modèle BuddyPress

Pour commencer, examinons les fonctions BuddyPress qui sont essentielles au développement du thème - les balises de modèle. Le codex de BuddyPress en contient une liste à titre de référence. Ces balises de modèle sont essentielles pour personnaliser réellement vos thèmes et, comme Dan Davies l’a suggéré dans son récent article wp.tutsplus, vous devriez en avoir certaines en composition abrégée si vous envisagez de développer beaucoup de thèmes dans BuddyPress. Certaines d'entre elles sont exactement les mêmes que les balises de modèles dans Wordpress, ce qui devrait également vous faire gagner du temps si vous avez de l'expérience en conception de modèles dans WordPress..

Voici une liste rapide de balises de gabarit de l'en-tête au bas de page à utiliser dans le développement de votre thème:

    En-tête et navigation

  • get_header () - la même balise de template que WordPress. Cela inclut le fichier header.php de votre thème.
  • bp_get_loggedin_user_nav () - affiche les liens de navigation du site pour les utilisateurs connectés. Il ajoute également une classe "actuellement sélectionnée" à l'élément de navigation en cours de visualisation afin que vous puissiez créer du code CSS personnalisé pour modifier l'affichage de cet élément de liste..
  • Formatage de contenu et de post

    Ces balises de modèle sont les mêmes que celles utilisées pour formater et afficher le contenu dans WordPress. Ils fonctionnent également dans la même boucle WordPress. Pour voir un exemple de ceux-ci en action, ouvrez le thème bp-default et ouvrez index.php. Les lignes 15 à 61 donnent un bon exemple de la boucle WordPress au travail dans BuddyPress.

  • le contenu()
  • the_excerpt
  • the_tags ()
  • la_catégorie ()
  • Informations sur l'utilisateur et le membre

    Pour voir ces balises en action, ouvrez members / member-loop.php et members / single.php dans bp-default.

  • bp_loggedin_user_avatar () - affiche l'avatar de l'utilisateur actuellement connecté.
  • bp_loggedin_user_domain ()- renvoie l'URL de l'utilisateur actuellement connecté.
  • bp_member_permalink - renvoie l'URL de la page de profil d'un membre.
  • bp_member_avatar - affiche l'avatar d'un membre. Ceci peut être utilisé dans la boucle de membre pour créer une liste globale d'utilisateurs.
  • bp_get_user_firstname ()
  • bp_group_member_joined_since ()
  • Groupes

    Pour voir ces balises en action, ouvrez groups / groups-loop.php et groups / single.php dans bp-default.

  • bp_group_permalink () - fait écho à un lien vers la page d'accueil d'un groupe particulier.
  • bp_group_avatar () - affiche l'avatar d'un groupe.
  • bp_group_description_excerpt () - affiche la description du groupe telle que spécifiée par l'administrateur du groupe.
  • bp_get_group_name () -
  • Activité

  • bp_sitewide_activity_feed_link () - fait écho au lien du flux d'activité RSS du site.
  • Formulaires de recherche

  • bp_directory_groups_search_form () - affiche un formulaire de recherche qui fera une recherche parmi tous les groupes publics et leur activité.
  • bp_directory_forums_search_form () - affiche un formulaire de recherche qui permet d'effectuer des recherches en fonction du contenu du forum.
  • bp_directory_members_search_form () - affiche un formulaire de recherche permettant des recherches basées sur le contenu et les informations des membres.
  • Comprend

  • Locate_template () - ceci est utilisé pour inclure des modèles tels que la barre latérale et les formulaires de recherche. Pour inclure la barre latérale, cela ressemble à:
     

    Vous pouvez également utiliser cette balise de modèle pour afficher les modèles de formulaire de recherche. Pour cela, ne cherchez pas plus loin que le fichier index.php de bp-default.

  • Pagination

  • bp_groups_pagination_count ()
  • bp_groups_pagination_links ()
  • bp_members_pagination_count ()
  • bp_members_pagination_links ()
  • bp_activity_pagination_count ()
  • bp_activity_pagination_links ()
  • En plus de cela, il existe d'autres balises de modèle de pagination pour différents types de contenu. Remplacez simplement le mot "groupes" dans les balises de modèle ci-dessus par les mots: forum, blogs, membre du groupe ou messages, pour inclure les liens ou compter pour la boucle utilisée. Ces boucles sont examinées plus en détail ci-dessous.

    Bas de page

  • get_footer ()

Travailler avec des boucles BuddyPress

Comme je l'ai déjà mentionné ci-dessus, vous pouvez utiliser la boucle WordPress par défaut dans vos thèmes pour afficher des messages et publier du méta-contenu. BuddyPress contient également ses propres boucles, chacune étant chargée d’afficher les types de contenu spécifiques à BuddyPress. BuddyPress inclut des boucles pour: les groupes, les membres, le flux d'activité, les sujets de forum, les blogs, les membres du groupe, les messages privés et les données de profil. Bien que chacun de ces éléments ressemble beaucoup à la boucle WordPress standard, chacun a ses propres variables spécifiques qui permettent également une plus grande personnalisation..

Assurez-vous de plonger dans les fichiers de thème bp-default pour mieux comprendre les boucles et leurs utilisations spécifiques. Chaque type de contenu aura un dossier dans lequel se trouve le fichier de boucle spécifique..

Regardons un aperçu de chacun d’eux, et quelques moyens spécifiques de personnaliser leur affichage..

Boucle groupes

La boucle groups permet d’afficher une liste des groupes de sites. La boucle ressemble à ceci:

  
  • ">
    ">
    /

Les paramètres suivants sont les plus utiles lors de la personnalisation de la boucle de groupes:

  • type - par défaut, il est réglé sur actif, mais est également capable d’accepter les éléments suivants: nouveauté, populaire, aléatoire, alphabétique, plupart des sujets de forum, la plupart des messages de forum.
  • par page - Par défaut, la boucle BuddyPress affiche 10 groupes par page, mais en entrant un nouveau numéro, vous pouvez modifier celui-ci..
  • identifiant d'utilisateur - en spécifiant un identifiant d'utilisateur, seuls les groupes dont l'utilisateur fait partie seront affichés. Par exemple, pour afficher uniquement les groupes auxquels appartient l'utilisateur actuellement connecté, le code serait:

Jetons un coup d'œil à un exemple de boucle, personnalisé à l'aide des paramètres ci-dessus. Juste après le support d’ouverture, entrez ce qui suit:

 $ args = array ('type' => 'popular', 'max' => 5, 'user_id' => $ user_id); if (bp_has_groups ($ args)) ? 

Puisque nous utilisons plusieurs arguments, je mets en place une variable nommée args qui peut gérer un tableau. J'ai ensuite défini le type sur popular, le nombre maximal par page sur 5 et l'identifiant utilisateur sur l'identifiant de l'utilisateur actuellement connecté. Ceci affichera ensuite les 5 groupes les plus populaires auxquels le membre actuel appartient et ensuite paginera le reste..

Boucle des membres

La boucle des membres est utilisée pour afficher une liste des membres actuels. La boucle des membres standard ressemble à ceci:

  
  • ">
    "> -

Pour aller plus loin, décomposons un peu ce code. Les premières et dernières lignes sont vitales, et dites à BuddyPress d’afficher le reste de notre code uniquement s’il existe des membres présents..

 ? 

Ensuite, nous avons nos balises de modèles de pagination de membres. Il existe également des balises de modèle pour d'autres types de contenu, tels que les groupes et les blogs. Ceux-ci sont écrits ci-dessus pour votre référence.

 

Comme vous pouvez le constater, chaque boucle peut être décomposée en éléments révélant davantage d'informations sur les balises de modèle et leurs utilisations. Dans cette seule boucle, nous voyons les balises template: bp_member_profile_data, bp_member_permalink, bp_member_avatar et bp_member_latest_update.

le bp_has_members () L'argument a plusieurs paramètres qui peuvent être personnalisés pour modifier la liste des membres affichée. Les plus utiles sont:

  • type - renvoie les utilisateurs actifs par défaut. Les autres arguments sont: plus récent, populaire, en ligne, alphabétique, aléatoire.
  • par page
  • max
  • identifiant d'utilisateur - lorsque ceci est spécifié, il ne renvoie que les utilisateurs amis du numéro d'utilisateur spécifié.

Boucle de flux d'activité

  
  • ">

Les paramètres utiles pour la boucle de flux d'activité sont les suivants:

  • display_comments - lorsqu'il est défini sur "true", cela affichera les commentaires sur l'activité.
  • par page - encore une fois, cela définit le nombre d'activités à afficher avant la pagination de BuddyPress.

Il existe d'autres astuces utiles sur le filtrage de l'activité à l'échelle du site et sur l'ajout de commentaires sur la page de boucle de flux d'activités du codex BuddyPress..

Forum Sujets Boucle

La boucle de rubriques de forum est utilisée pour afficher une liste de rubriques de forum, les derniers postés sur le sujet et le nombre total de posts dans le sujet, entre autres choses. La boucle ressemble à ceci:

  
"title =" - "> ">
">
"title ="">

Les paramètres utiles pour la boucle des sujets du forum sont les suivants:

  • type - Par défaut, la boucle extrait les sujets les plus récents, ou les plus récents, mais vous pouvez utiliser les arguments suivants: balises populaires, sans réponses. Si vous choisissez "tags", alors vous devez également utiliser des termes de recherche spécifiques.
  • Forum ID - en spécifiant cela, vous extrayez les sujets de forum uniquement à partir de l'ID de forum spécifié..
  • termes_recherche - utilisé en conjonction avec le type "tags" pour ne renvoyer que des sujets spécifiques par mot-clé.

Boucle des blogs

La boucle de blogs est utilisée pour afficher une liste de blogs d'utilisateurs. La boucle ressemble à ceci:

  
  • ">
    ">
    "title ="">

Les paramètres utiles pour la boucle de blogs sont les suivants:

  • type - Par défaut, cela renvoie les blogs actifs, mais vous pouvez également utiliser les arguments: plus récent et aléatoire..
  • par page

Boucle des membres du groupe

Cette boucle est utilisée pour afficher les membres d'un groupe spécifique.

  

Ce groupe n'a pas de membres.

Boucle de messages privés

La boucle de messages privés est utilisée pour afficher des messages privés à un utilisateur. Il comprend également une belle liste de balises de modèle pour personnaliser son affichage.

 

Il n'y a aucun message à afficher.

Boucle de données de profil

La boucle de données de profil est utilisée pour afficher les données de profil de l'utilisateur.

   

Cet utilisateur n'a pas de profil.

Bien que BuddyPress contienne de nombreuses boucles, elles sont faciles à comprendre et à personnaliser. En les étudiant, vous devriez également mieux comprendre comment BuddyPress utilise les balises de gabarit et les conditionnelles dans son thème par défaut. Voyons maintenant comment BuddyPress utilise les balises de modèle conditionnelles.

Utilisation d'étiquettes de modèle conditionnelles

Les conditions sont un excellent moyen de développer facilement et rapidement des thèmes personnalisés qui changent en fonction de certaines conditions. Dans BuddyPress, ces conditions commenceront par: bp_is_ et ils sont utilisés pour afficher un contenu spécifique sur des pages spécifiques. Par exemple, si je souhaitais afficher quelque chose de spécifique sur les pages d'accueil de groupe, j'utiliserais la balise de modèle conditionnel suivante:

  Afficher ceci sur les pages d'accueil du groupe 

Ma balise de modèle conditionnel est ici bp_is_group_home (). Pour afficher quelque chose uniquement sur les pages d'accueil des utilisateurs, je ferais la même chose que ci-dessus, mais avec la balise de modèle conditionnelle: bp_is_home ou bp_is_my_profile.

Pour une liste complète de ceux-ci, cliquez ici..


Créer un thème pour enfants BuddyPress

Passons maintenant à la conversation sur les API - vous pouvez vous lever et vous étirer pendant une minute si vous en avez besoin - et passer à une application pratique. Encore une fois, nous essayons de préparer le terrain pour que notre thème personnalisé apparaisse dans les parties 2 et 3, voyons maintenant la création d’un thème enfant pour BuddyPress. Je ne saurais trop insister sur l'importance de cela. Permettez-moi de partager une expérience personnelle sur l’importance de ce point. Récemment, j'ai commis une erreur de recrue et modifié directement les fichiers de base de BuddyPress sans penser aux mises à niveau et aux nouvelles versions. Je parie que vous pouvez deviner ce qui s'est passé ensuite. C'est vrai. J'ai oublié de le sauvegarder et la nouvelle version a écrasé tout le travail que j'avais effectué. J'étais assez déprimé et j'ai dû passer des heures inutiles à réparer les dégâts. Donc, pour vous aider à éviter cela, voici comment créer un thème enfant BuddyPress que nous allons éditer et sur lequel nous travaillerons dans les deux prochaines parties de cette série de tutoriels..

Jeter des bases solides

Tout d’abord, créez un nouveau dossier dans votre wp-content / thèmes / dossier nommé cool-bp-theme. Ce sera notre thème enfant BuddyPress. Si vous ne savez pas ce qu'est un "thème enfant", considérez-le simplement comme un thème qui fonctionnera et fonctionnera comme le thème bp-default situé dans wp-content / plugins / buddypress / bp-themes / bp-default / , mais autorisera l'édition et la personnalisation et ne se brisera pas lorsque Wordpress ou BuddyPress sera mis à niveau. Pour ce faire, il ne modifie que les fichiers de modèle situés dans notre dossier de thèmes enfants. Il utilisera même la feuille de style bp-default, mais autorisera l’importation de nouvelles feuilles de style ou le remplacement du CSS original dans style.css..

Après avoir créé le nouveau dossier, je crée un nouveau fichier functions.php vide (car je compte modifier certaines fonctionnalités) et un nouveau fichier style.css avec le code suivant:

 / * Nom du thème: Nouveau thème cool pour BuddyPress Description: Nouveau thème cool pour BuddyPress. Version: 1.0 Auteur: Adam Murray URI de l'auteur: http://twodoorscreative.com/ Modèle: bp-default Étiquettes: buddypress, two-column, light * /

L’élément fondamental ici est le modèle ligne, où je lie cela au thème bp-default, ce qui en fait un thème enfant. Je souhaite maintenant aller plus loin et importer les feuilles de style standard de bp-default. Pour ce faire, sous ce code, j'entre:

/ * Hériter des styles de thème par défaut * / @ import url (? /? /Plugins/buddypress/bp-themes/bp-default/_inc/css/default.css); / * Hériter des styles d'administration par défaut du thème * / @import url (? /? /Plugins/buddypress/bp-themes/bp-default/_inc/css/adminbar.css);

Maintenant, vous avez les bases d'un thème enfant BuddyPress. Si vous naviguez jusqu'à Apparence -> Thèmes dans votre tableau de bord Wordpress, vous verrez maintenant le thème enfant et, lorsque vous l'activez, vous devriez voir exactement ce que vous verriez si vous activiez bp-default..

Dupliquer, déplacer et modifier

Puisque le thème enfant est maintenant actif et actif, pour éditer un modèle, nous procédons simplement comme suit:

  1. Dupliquez le fichier que nous voulons éditer à partir du thème bp-default.
  2. Déplacez le fichier dupliqué - en conservant le même nom de fichier - dans notre nouveau dossier de thème enfant. Vous pouvez également copier l'ancien fichier dans le nouveau dossier de thèmes..
  3. Editez le fichier. Au fur et à mesure que vous éditez, vous remarquerez immédiatement les changements dans l'apparence de votre thème..

Pour un exemple rapide, expliquons l’ajout du menu en-tête personnalisé que j’ai enseigné dans le didacticiel BuddyPress du mois dernier..

  1. Copiez header.php dans votre nouveau dossier de thème.
  2. Ouvrez le fichier functions.php vide que vous avez créé et ajoutez ce qui suit:
      ('Menu d'en-tête')));  add_action ('init', 'register_bp_default_menus'); ?>
  3. Ouvrez maintenant header.php et remplacez la ligne 79 par ce qui suit:
      'header-menu', 'container' => false,)); ?>
  4. Maintenant, ouvrez votre site et voyez comment l'ancienne liste de pages a été supprimée. Aller à Apparence -> Menus et créer un nouveau menu d'en-tête!

La meilleure partie de toutes est qu’il s’agit d’un changement permanent qui ne sera pas supprimé du fait d’une mise à niveau.!


Conclusion

En conclusion, comme j'espère l'avoir répété à maintes reprises, il s'agit d'un fondement sur lequel vous pouvez bâtir. J'espère que ce tutoriel vous a permis de mieux comprendre l'API de BuddyPress et qu'il vous a aidé à mieux vous familiariser avec les éléments qui composent un thème BuddyPress. Dans les sections à venir, nous développerons notre thème enfant actuel pour créer un thème qui ressemble à celui que nous souhaitons en utilisant des balises de modèle, des boucles et des conditions. En faisant cela ensemble, j'espère vous emmener dans un endroit où vous pourrez facilement créer de nouveaux thèmes avec BuddyPress..

Merci de m'avoir lu et j'espère vous avoir aidé à apprendre quelque chose de nouveau sur la thématisation avec BuddyPress et son API.!