Schlagwort-Archive: php

Die verdammt intelligenten E-Mail-Vorlagen von BuddyPress – ein Einblick in die inneren Organe

BuddyPress hat mit der Version 2.4 Funktionen zur Anpassungen der Mails eingeführt.

Dadurch lassen sich mit Platzhalter sehr einfach die ausgehenden Mails bearbeiten:

 

Alles was in den geschwungenen Klammern {} steht wird Daten von BuddyPress ersetzt.

BuddyPress nennt das Email-Tokens und hat dazu auch einen eigenen Hilfeartikel: https://codex.buddypress.org/emails/email-tokens/

Soweit so gut. Das sind also Dinge, die der User sieht. Dinge an der Oberfläche. Wie kommt es soweit aka welcher Code steht dahinter?

Der Post-Types: bp-email

Erstellt wird der Post Type bp-email in class-bp-core.php:301.

 

Die Taxonomie: bp-email-type

Die Taxonomie wird verwendet, um die Situation zu beschreiben in der die Mail verschickt wird.

Die Taxonomie wird im Backend als „Situation“ bezeichnet:

Erstellt wird diese Taxonomie unter buddypress/bp-core/bp-core-taxonomy.php:

https://github.com/buddypress/BuddyPress/blob/78800bc6767ef30ce1831d914a6f17f1dfab5e9c/src/bp-core/admin/bp-core-admin-schema.php#L498

Taxonomy und Post-Type Namen

Finden sich in der Datei buddypress/class-buddypress.php:

Für den Post-Type also bp-email und für die Taxonomie bp-email-type.

 

Vorgegebene E-Mail Vorlagen erstellen

In der Datei buddypress/bp-core/admin/bp-core-admin-schema.php:498 werden dann die default Posts erstellt, die dann im Backend so ersichtlich sind:

https://github.com/buddypress/BuddyPress/blob/78800bc6767ef30ce1831d914a6f17f1dfab5e9c/src/bp-core/admin/bp-core-admin-schema.php#L498

 

Der Text für die default Mails findet sich in buddypress/bp-core/bp-core-functions.php unter bp_email_get_schema():

Die Taxonomie-Terms werden für den Zweck der Mail verwendet:

Der Text davon kommt aus buddypress/bp-core/bp-core-functions.php unter bp_email_get_type_schema():

 

Zusammenspiel von Posts und Terms

Die Textvorlagen der Email-Posts haben einen Key, der direkt auf ein Term referenziert:

 

activitiy-comment bei der Textvorlage des Posts
activitiy-comment bei der Term-Textvorlage
Verknüpfung der Textvorlage beim Post und beim Term

So sieht die Verknüpfung zwischen Post und Term dann im Backend aus: