[buddypress-trac] [BuddyPress Trac] #6772: BuddyPress Embeds for activity, user profiles, groups
buddypress-trac
noreply at wordpress.org
Tue Dec 15 21:07:39 UTC 2015
#6772: BuddyPress Embeds for activity, user profiles, groups
------------------------------------+------------------
Reporter: imath | Owner:
Type: idea | Status: new
Priority: normal | Milestone: 2.5
Component: API | Version:
Severity: normal | Resolution:
Keywords: dev-feedback has-patch |
------------------------------------+------------------
Changes (by r-a-y):
* keywords: dev-feedback => dev-feedback has-patch
Comment:
Attached is a first pass at activity oEmbeds.
[[Image(http://imgreview.com/i/gVMrk)]]
Some dev notes:
1. Activity oEmbed links
- The activity oEmbed link is the members activity permalink -
`example.com/members/USER/activity/XXX/` not `example.com/activity/p/XXX`
- Pasting this link in the WP TinyMCE editor works (see screenshot)
- Pasting in the BP activity post form works, but the javascript required
to hide the fallback `<blockquote>` does not fire. I also had to register
the activity link as an oEmbed provider for this to work in BuddyPress.
See `bp_activity_embed_add_oembed_provider()`. WP's TinyMCE appears to
work without registering an oEmbed provider. Not sure how this works at
the moment, but that is probably the reason why WP posts do not show up as
oEmbed items in BuddyPress.
- You can view what the oEmbed looks like by appending `?embed=true` to it
- `example.com/members/USER/activity/XXX/?embed=true`
2. Embed templates
- The default WP embed template - `/wp-includes/embed-template.php` - is a
template that contains all the markup for embedding.
- For BP, I've customized this default template to `/embeds/template.php`.
- I've also split up this template into multiple template parts -
`/embeds/header.php`, `/embeds/footer.php`, etc. - for better
customization.
- The BP activity component injects content into this template via the
existing `'embed_content'` hook and a custom template part -
`'/embeds/activity.php`. This works similar to how BP plugins use the
`'bp_template_content'` hook.
- I've also added a simplistic template hierarchy - `/embeds/template-
single-activity.php`, `/embeds/template.php`. Theme devs can override
these by copying and pasting into their theme directory. (eg.
`/buddypress/embeds/template.php`.)
- I'm using the `/embeds/css.php` file to add inline CSS temporarily.
This should probably be moved to the `'embed_head'` hook, so disregard
this for the time being.
3. Hooking into oEmbed for BuddyPress purposes
- Requires some hackery. WordPress expects a WordPress post ID when
formulating the oEmbed response. To overcome this, I'm passing our
Members Directory page ID and adding some markers so BP can render the
oEmbed response. See `bp_activity_embed_filter_oembed_request_post_id()`
for what I'm doing.
- The `bp_activity_embed_filter_html()` function alters the fallback
`<blockquote>` HTML for BuddyPress purposes.
- The `bp_activity_embed_filter_oembed_response_data()` function filters
the oEmbed JSON response.
--
Ticket URL: <https://buddypress.trac.wordpress.org/ticket/6772#comment:5>
BuddyPress Trac <http://buddypress.org/>
BuddyPress Trac
More information about the buddypress-trac
mailing list