Das WordPress Plugin TootPress kopiert fortlaufend deine Tröts von Mastodon nach WordPress. Die Tröts können im Blog chronologisch angezeigt werden und damit wird die eigene Timeline weiteren Personen abseits von Mastodon zugänglich. Zusätzlich gewinnt man den Besitz der eigenen Daten zurück.
Features
- Kopiere deine Tröts zurück
- Kopiere deine vertröteten Bilder zurück
- Anzeige der Tröts im Blog
- Lade deine komplette Timeline
- Sprache: Englisch, Deutsch (eingeschränkt)
Screenshots
Live Demo
Konfigurationsanleitung
- Plugin in WordPress installieren und aktiveren
- Um einen API-Schlüssel von Mastodon zu erhalten, muss man eine Applikation auf der genutzten Instanz erstellen (unter Einstellungen/Entwicklung)
- Berechtigung der erstellten Applikation auf READ (alle Daten) einschränken
- Die Mastodon Instanz und das Zugangs-Token in den TootPress Einstellungen hinterlegen
- Account ID abrufen (in WordPress unter Werkzeuge/Toots)
- Account ID in den TootPress Einstellungen hinterlegen
- Eine neue WordPress Seite anlegen und die Seite in ein Menü einhängen
- Die Page ID der Seite in den TootPress Einstellungen hinterlegen. Man findet die Page ID in der URL des Browsers, wenn man eine Seite in WordPress bearbeitet.
- Mastodon API Request durchführen (in WordPress unter Werkzeuge/Toots)
- Steady Fetch aktivieren
- Das war’s!
Gebrauchsanweisung
- Man findet TootPress in WordPress jeweils im Menü Einstellungen und Werkzeuge
- Die Funktion Steady Fetch aktiviert den fortlaufenden und automatischen Abruf der aktuellen Tröts
- Der erste Aufruf der Mastodon API kopiert die letzten 40 Tröts
- Neue Tröts werden alle 15 Minuten geladen (einstellbar)
- Man kann die komplette Timeline mit der gleichnamigen Funktion abrufen
- Der Abruf der kompletten Timeline kann mehrere Stunden dauern, abhängig von der Größe der Timeline
- Es werden dabei maximal 480 Tröts pro Stunde geladen
- Einen Mastodon API Request kann jederzeit mit der gleichnamigen Funktion manuell durchgeführt werden
- Es gibt keine vorgeschriebene feste Reihenfolge von Steady Load, dem Laden der kompletten Timeline oder manuellen Abrufen
- Falls Probleme auftreten, bitte den Healthy Check durchführen
Tröt Inhalte
Folgende Tröt Inhalte werden unterstützt.
- Text
- Bilder
- URLs
- Hashtags
- Mentions
- Gallerien
Folgende Tröt Inhalte werden nicht unterstützt.
- Audio
- Video
- Umfragen
- Teaser
- Quotes
Ausgeschlossene Toot Typen
Folgende Tröt Typen werden nicht über die API abgerufen.
- Boosts
- Replys
- Private Toots
Architektur
Datenhaltung und Prozesslogik sind vom WordPress Framework separiert. Die Tröts werde also nicht in der Tabelle wp_posts gespeichert. Und TootPress registriert auch keinen neuen Custom Post Type für die Tröts.
CSS Klassen
TootPress wird nur mit den nötigsten CSS Styles ausgeliefert. Für ein optimales Ergebnis ist es erforderlich, weitere Styles im Theme zu ergänzen oder bestehende Styles zu überschreiben. Alle TootPress UI Elemente können über einen CSS Selektor angesteuert werden.
Daten & Verzeichnisse
TootPress erstellt zwei Order im WordPress Upload Verzeichnis.
- tootpress-mastodonapidata = Archiv der geladenen Mastodon API Daten im JSON-Format
- tootpress-images = Geladene Bilder
wpCrons
Es werden zwei wpCrons in WordPress registriert.
- Steady Fetch (alle 15 Minuten, einstellbar)
- Load Complete Timeline (alle 5 Minuten)
TootPress API
Actions
tootpress_toots_update
Diese Action wird gefeuert nachdem neue Tröts geladen wurden.
Sie kann als Trigger für benutzerdefinierte Nachbearbeitung benutzt werden.
Folgender Code kann als Vorlage benutzt werden.
function tootpress_toots_update_postprocessing() {
// Add your code to be executed here
}
add_action('tootpress_toots_update', 'tootpress_toots_update_postprocessing');
Filter
tootpress_preamble_add
Dieser Filter gibt HTML Inhalte vor dem ersten Tröt Loop aus.
Folgender Code kann als Vorlage benutzt werden.
function tootpress_preamble_add( $preamble ) {
// Add your filter code here
// Example: $preamble='<p>Hello World.</p>';
return $preamble;
}
add_filter( 'tootpress_preamble_filter', 'tootpress_preamble_add', 10, 1 );
tootpress_closing_filter
Dieser Filter gibt HTML Inhalte nach dem letzten Tröt Loop aus.
Folgender Code kann als Vorlage benutzt werden.
function tootpress_closing_add( $content ) {
// Add your filter code here
// Example: $content='<p>Hello World.</p>';
return $content;
}
add_filter( 'tootpress_closing_filter', 'tootpress_closing_add', 10, 1 );
tootpress_menu_forward_label
Dieser Filter überschreibt das Vorwärts Label in der Bottom Navigation.
Folgender Code kann als Vorlage benutzt werden.
function tootpress_menu_forward_label_change( $label ) {
// Add your filter code here
// Example: $label='Newer Posts';
return $label;
}
add_filter( 'tootpress_menu_forward_label', 'tootpress_menu_forward_label_change', 10, 1 );
tootpress_menu_backward_label
Dieser Filter überschreibt das Rückwärts Label in der Bottom Navigation.
Folgender Code kann als Vorlage benutzt werden.
function tootpress_menu_backward_label_change( $label ) {
// Add your filter code here
// Example: $label='Older Posts';
return $label;
}
add_filter( 'tootpress_menu_backward_label', 'tootpress_menu_backward_label_change', 10, 1 );
tootpress_beforeloop_filter
Dieser Filter gibt Inhalte vor dem Tröt Loop aus (auf allen Loop Seiten).
Folgender Code kann als Vorlage benutzt werden.
function tootpress_beforeloop_add( $content, $current_page_number, $last_page_number ) {
// Add your filter code here
// Example: $content='<p>Page '.$current_page_number.' of '.$last_page_number.'</p>';
return $content;
}
add_filter( 'tootpress_beforeloop_filter', 'tootpress_beforeloop_add', 10, 3 );
tootpress_afterloop_filter
Dieser Filter gibt Inhalte nach dem Tröt Loop aus (auf allen Loop Seiten).
Folgender Code kann als Vorlage benutzt werden.
function tootpress_afterloop_add( $content, $current_page_number, $last_page_number ) {
// Add your filter code here
// Example: $content='<p>Page '.$current_page_number.' of '.$last_page_number.'</p>';
return $content;
}
add_filter( 'tootpress_afterloop_filter', 'tootpress_afterloop_add', 10, 3 );
tootpress_mastodon_logo_filter
Dieser Filter überschreibt das Mastodon Logo mit einem anderen Bild.
Folgender Code kann als Vorlage benutzt werden.
function tootpress_mastodon_logo_change ( $img ) {
// Standard Value
// <img class="toot-symbol" src="FILE-URL" alt="Toot Symbol" width="35" height="37"/>
// Add your filter code here
// Example: $img='<img class="toot-symbol" src="FILE-URL" alt="Custom Toot Symbol" width="32" height="32"/>';
return $img;
}
add_filter( 'tootpress_mastodon_logo_filter', 'tootpress_mastodon_logo_change', 10, 1 );
tootpress_between_filter
Dieser Filter gibt HTML zwischen den einzelnen Tröts aus.
Folgender Code kann als Vorlage benutzt werden.
function tootpress_create_element_between ( $content ) {
// Add your filter code here
// $content='<hr/>';
return $content;
}
add_filter( 'tootpress_between_filter', 'tootpress_create_element_between', 10, 1 );
tootpress_toot_content_filter
Dieser Filter kann benutzt werden, um Tröt Inhalte zu manipulieren.
Folgender Code kann als Vorlage benutzt werden.
function tootpress_manipulate_content ( $content ) {
// Add your filter code here
// $content=str_replace('href=','target="_blank" href=',$content);
return $content;
}
add_filter( 'tootpress_toot_content_filter', 'tootpress_manipulate_content', 10, 1 );
tootpress_date_filter
Dieser Filter überschreibt die Ausgabe des Datums mit eigenem Format.
Folgender Code kann als Vorlage benutzt werden.
function tootpress_date_custom_format ( $date, $year, $month, $day, $hour, $minute, $second ) {
// $date = 2023-05-30 22:40:28
// $year = 2023
// $month = 05
// $day = 30
// $hour = 22
// $minute = 40
// $second = 28
// Add your filter code here
// $date=$day.'.'.$month.'.'.$year.' '.$hour.':'.$minute.':'.$second;
return $date;
}
add_filter( 'tootpress_date_filter', 'tootpress_date_custom_format', 10, 7 );
tootpress_image_filter
Dieser Filter kann benutzt werden, um Image Tags zu manipulieren.
Folgender Code kann als Vorlage benutzt werden.
function tootpress_image_manipulate ($img_tag, $filename, $description, $width, $height, $image_directory_path, $amount_of_images, $image_number) {
// Amount of Images
// ----------------
// 1 = Single Image
// >1 = Gallery + Size of Gallery
// Image Number
// ------------
// This number indicates position within the gallery
// Add your filter code here
// $img_tag=str_replace('alt=','class="tootpress-image" alt=',$img_tag);
return $img_tag;
}
add_filter( 'tootpress_image_filter', 'tootpress_image_manipulate', 1, 8 );
Frequently Asked Questions
Warum werden Boosts, Replys und private Tröts nicht unterstützt?
Boosts sind nicht deine Tröts. Replys sind mehr Kommunikation als Tröts. Und private Tröts sollten privat bleiben.
Wie geht TootPress mit der Canonical URL um?
TootPress greift nicht in das Handling der Canonical URL von WordPress ein. Das bedeutet, wenn man eine unique Canonical URL für jede TootPress Unterseite haben möchte, muss man dies mit Hilfe eines SEO Plugins regeln. Dies ist relevant, wenn sich die Timeline über mehrere Seiten erstreckt und das Plugin den Paging Prozess startet. Jede dieser Unterseiten hat standardmäßig die gleiche Canonical URL.
Was muss beim Einsatz eines Caching Plugins beachtet werden?
Wie schnell ein Tröt im Blog angezeigt wird, wird durch zwei Faktoren bestimmt. Einerseits dadurch, wie oft die Tröts geladen werden (Einstellung Period), andererseits dadurch wie oft der Cache refreshed wird. Soll ein Tröt schnellstmöglich im Blog angezeigt werden, muss die TootPress Seite vom Caching ausgeschlossen werden. Eine weitere Möglichkeit besteht darin, die TootPress Seite aus dem Cache zu entfernen, sobald neue Tröts geladen wurden. Dafür stellt TootPress eine WordPress Action bereit, die vom Caching Plugin bearbeitet werden muss.
Wo sind die Backlinks?
Backlinks zu Mastodon können in den Plugin-Einstellungen aktiviert werden. In diesem Fall wird das Mastodon-Logo, welches für jeden Toot angezeigt wird, um einen Link zum ursprünglichen Toot auf der entsprechenden Mastodon-Instanz erweitert. Es wird empfohlen, die Backlinks nicht zu aktivieren, da dies einen negativen Einfluss auf die SEO-Bewertung haben kann.
Unterstützt TootPress das Feature WordPress Multisite?
Nein. Das Plugin funktioniert nur auf der Master-Seite im Multisite Netzwerk, aber nicht auf den Child-Seiten.
Sind die Tröts in der WordPress Suche enthalten?
Leider nicht.
Gibt es eine Möglichkeit, die Ausgaben des Plugins zu manipulieren?
Fast jedes Element kann verändert werden. Beispielsweise kann man das Mastodon Logo durch ein eigenes Bild ersetzen. Dafür stellt das Plugin eine Reihe von Filtern bereit. Hierzu bitte die Dokumentation lesen.
Erkennt TootPress, ob ein publizierter Tröt nachträglich geändert wurde?
Das Plugin synchronisiert nicht die Tröts zwischen Mastodon und WordPress. TootPress kopiert die Tröts nur einmal, nachdem sie auf Mastodon veröffentlicht wurden. Wenn ein publizierter Tröt nachträglich auf Mastodon editiert und verändert wurde, hat TootPress darüber keine Kenntnis, sofern der Tröt schon nach WordPress kopiert worden ist. Um die Änderung ebenfalls in WordPress nachzuziehen, verbleibt nur die Möglichkeit, die gleiche Änderung noch einmal manuell in der WordPress Datenbank durchzuführen. Die Tröts werden in der Tabelle tootpress_toots gespeichert.
Können Tröts von mehreren Mastodon Instanzen geladen werden?
Nein. Aktuell unterstützt das Plugin nicht mehrere Mastodon Instanzen. Die Architektur ist darauf ausgelegt, Tröts nur von einer einzigen Instanz zu laden. Unabhängig davon, wenn die Timeline Historie über mehrere Instanzen verteilt ist, und sich die einzelnen Timelines zeitlich nicht überlagern, kann man es mal ausprobieren, die einzelnen Timelines nacheinander zu laden. Offiziell wird das nicht unterstützt und wurde auch nicht getestet. Laut Feedback von Benutzern des Plugins funktioniert das aber überraschenderweise.
Historie
TootPress ist eine Weiterentwicklung von mathilda. Mathilda war für Twitter geschrieben. Nach der Transformation von Twitter zu X wurde die Pflege und Weiterentwicklung jedoch eingestellt.
Download
TootPress @ WordPress Plugin Directory
TootPress @ unmus
Support
Formal wird kein Support für TootPress angeboten. Für Hinweise und Fehlerberichte bin ich aber dennoch dankbar. Fehler bitte im Support Forum von TootPress auf WordPress.org berichten oder direkt auf GitHub als Issue einstellen. Verbesserungsvorschläge und Anregungen bitte per eMail an tootpress@unmus.de.
Lizenz
TootPress ist Open Source und steht unter der GPLv3 Lizenz.
GitHub
Änderungsprotokoll
Version 0.5 „Echo“
Juli 2025
- Feature: Closing Filter
- Feature: Move Forward Label Filter
- Feature: Move Backward Label Filter
- Feature: Before Loop Filter
- Feature: After Loop Filter
- Feature: Mastodon Logo Filter
- Feature: Between Filter
- Feature: Toot Content Filter
- Feature: Date Filter
- Feature: Image Filter
- Changed: DOM Structure
- Renamed: CSS Classes
- Security: Better Output Escaping
Version 0.4 „Cassie Lang“
Juni 2024
- Neu: Preamble Filter
Version 0.3 „Deadpool“
April 2024
- Neu: Unterstützung von Gallerie Tröts
- Neu: Mastodon Backlinks
- Neu: Integration in das WordPress Widget „Auf einen Blick“
- Geändert: Label der User Interface Section in den Einstellungen
- Korrigiert: Plugin CSS wird nun wirklich aktiviert
- Korrigiert: Rewrite Rules werden jetzt wirklich aktualisiert
- Korrigiert: Interne Versionierung wird richtig gesetzt
- Korrigiert: CSS Option wird beim Rest auf Werkseinstellungen richtig gesetzt
Version 0.2.1
April 2023
- Korrigiert: Verschwundes Label in den TootPress Einstellungen (Nav Standard)
Version 0.2 „Kate Bishop“
April 2023
- Ergänzt: Echos werden escaped
- Geändert: CSS Queueing auf WordPress Funktion umgestellt
- Geändert: Bilder werden jetzt über WordPress HTTP API geladen
Version 0.1 „Ms Marvel“
März 2023
Initiale Version