PluginProbe
ActivityPub / 8.0.2
ActivityPub v8.0.2
9.3.1 9.3.0 9.2.2 9.2.1 9.2.0 9.1.0 9.0.2 9.0.1 9.0.0 8.3.0 8.2.1 8.2.0 8.1.1 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.2.0 1.3.0 2.0.0 2.0.1 2.1.0 2.1.1 All 160 releases
← All changes | integration/README.md +1 -72 9.2.08.0.2 View file →
@@ -1,74 +1,3 @@
1 1 # Integrations
2 2
3 -This folder holds the plugin's **third-party compatibility layer** — small classes that make ActivityPub cooperate with other plugins and hosting features, without any of them having to know about each other.
4 -
5 -## How they load
6 -
7 -`load.php` runs on `plugins_loaded` (`plugin_init()`; BuddyPress hooks `bp_include` instead, because it loads later). For each integration it first checks that the companion plugin is present — a `defined()`, `class_exists()`, or `function_exists()` probe — and only then wires it up:
8 -
9 -```php
10 -if ( \defined( 'JETPACK__VERSION' ) ) {
11 - Jetpack::init();
12 -}
13 -```
14 -
15 -A few integrations are always initialized (`Nodeinfo`, `Webfinger`, `Surge`, `Litespeed_Cache`, `Stream`) because they either target an always-available surface or do their own detection inside `init()`.
16 -
17 -## Two patterns
18 -
19 -1. **`::init()` classes** (most of them). A static `init()` registers the WordPress hooks the integration needs. Files are named `class-{name}.php`, namespaced `Activitypub\Integration`.
20 -
21 -2. **Transformer swaps** (`Podlove Podcast Publisher`, `Seriously Simple Podcasting`). These hook the `activitypub_transformer` filter in `load.php` to return a subclass of `Activitypub\Transformer\Post` that overrides `get_attachment()`, so an episode federates with its audio enclosure and cover art.
22 -
23 -## The integrations
24 -
25 -### Federation standards
26 -
27 -| Integration | What it does |
28 -|---|---|
29 -| **WebFinger** | Adds ActivityPub actor links to the [WebFinger](https://wordpress.org/plugins/webfinger/) plugin's responses. |
30 -| **NodeInfo** | Advertises ActivityPub in the [NodeInfo](https://wordpress.org/plugins/nodeinfo/) / NodeInfo2 server metadata. |
31 -| **OpenGraph** | Coordinates Open Graph output with the [OpenGraph](https://wordpress.org/plugins/opengraph/) plugin so tags aren't duplicated. |
32 -
33 -### Fediverse & reader surfaces
34 -
35 -| Integration | What it does |
36 -|---|---|
37 -| **Jetpack** | Syncs ActivityPub options and follower/following meta to WordPress.com, adds a Reader link on the Following screen, enables the Following UI, and adapts the "share to reply" flow. |
38 -| **Enable Mastodon Apps** | Feeds ActivityPub account, follower, post, and notification data to [Enable Mastodon Apps](https://wordpress.org/plugins/enable-mastodon-apps/) so native Mastodon client apps work against the site. |
39 -| **BuddyPress** | Maps BuddyPress member profiles into ActivityPub actors and adapts the Followers/Following blocks. |
40 -
41 -### Content & publishing
42 -
43 -| Integration | What it does |
44 -|---|---|
45 -| **Classic Editor** | Provides attachment/media extraction and editor UI for sites without the block editor. |
46 -| **Podlove Podcast Publisher** | Federates Podlove episodes with their audio enclosure and cover art *(transformer)*. |
47 -| **Seriously Simple Podcasting** | Federates Seriously Simple Podcasting episodes with their audio enclosure *(transformer)*. |
48 -
49 -### Caching
50 -
51 -| Integration | What it does |
52 -|---|---|
53 -| **LiteSpeed Cache** | Keeps the html and ActivityPub (JSON) responses in separate cache buckets, with a Site Health check. |
54 -| **Surge** | Keeps the html and ActivityPub (JSON) responses in separate cache buckets, with a Site Health check. |
55 -
56 -### Internationalization
57 -
58 -| Integration | What it does |
59 -|---|---|
60 -| **WPML** | Supplies the correct per-object locale for federated content under WPML. |
61 -| **Multisite Language Switcher** | Keeps ActivityPub data consistent across MSLS post translations. |
62 -
63 -### Other
64 -
65 -| Integration | What it does |
66 -|---|---|
67 -| **Akismet** | Keeps Akismet's comment handling sensible for federated interactions (likes, reposts, replies). |
68 -| **Yoast SEO** | Adds a Site Health check for Yoast settings that can interfere with federation. |
69 -
70 -## Adding an integration
71 -
72 -1. Create `class-{name}.php` in this folder, namespaced `Activitypub\Integration`, with a static `init()` (or, for a content transformer, a `Post` subclass).
73 -2. In `load.php`, add a guarded call — detect the companion plugin with `defined()` / `class_exists()` / `function_exists()`, then `init()` it (or register the transformer via the `activitypub_transformer` filter).
74 -3. Add tests under `tests/phpunit/tests/integration/`.
3 +This folder contains classes that take care of compatibility with other plugins.