- See previously BP Dev Chat summary (June 26)
- In attendance: @espellcaste & @im4th
- Slack archive
BP REST API focus
REST fields (~= BuddyPress Components metadata)
PRs #189, #193, & #194 have been merged into the BP REST API by @espellcaste : they brought these REST fields for the Activity, Groups, Members, Messages, Notifications, and xProfile (field/group/data) endpoints.
If you are a BuddyPress plugin developer, here’s how you can use this feature to create/update and get your custom REST Fields.
// Registers a REST field for the Activity Endpoints.
function example_register_activity_rest_field() {
bp_rest_register_field(
'activity', // Id of the BuddyPress component the REST field is about
'example_field', // Used into the REST response/request
array(
'get_callback' => 'example_get_rest_field_callback', // The function to use to get the value of the REST Field
'update_callback' => 'example_update_rest_field_callback', // The function to use to update the value of the REST Field
'schema' => array( // The example_field REST schema.
'description' => 'Example of Activity Meta Field',
'type' => 'string',
'context' => array( 'view', 'edit' ),
),
)
);
}
add_action( 'bp_rest_api_init', 'example_register_activity_rest_field' );
/**
* The function to use to get the value of the REST Field.
*
* @param array $array The list of properties of the BuddyPress component's object.
* @param string $attribute The REST Field key used into the REST response.
* @return string The value of the REST Field to include into the REST response.
*/
function example_get_rest_field_callback( $array, $attribute ) {
// The key of the metadata can be different from the REST Field key.
$metadata_key = '_example_metadata_key';
return bp_activity_get_meta( $array['id'], $metadata_key );
}
/**
* The function to use to update the value of the REST Field.
*
* @param object $object The BuddyPress component's object that was just created/updated during the request.
* (in this case the BP_Activity_Activity object).
* @return string $value The value of the REST Field to save.
* @param string $attribute The REST Field key used into the REST response.
*/
function example_update_rest_field_callback( $object, $value, $attribute ) {
// The key of the metadata can be different from the REST Field key.
$metadata_key = '_example_metadata_key';
bp_activity_update_meta( $object->id, $metadata_key, $value );
}
View the code on Gist.GitHub.com
REST links
The Message endpoint got its filterable links (See the prepare_links() method of its endpoint).
@espellcaste and I are agreeing the other components should also include a filter to let plugin developers eventually add custom links. #Needs-PR 😉
Documentation site about the BP REST API
We’ve discussed about the post where I suggest possible roads for a while with @espellcaste. In particular, I’ve shared my 2 concerns about the Restsplain plugin generated documentation :
- I think we should use it to write a more “human understandable” documentation. For instance, use “Create an activity” instead of
POST
- It would be better to use our
bp.apiRequest
function in code examples instead of thefetch()
one.
NB: After the Dev Chat, @johnjamesjacoby advised to keep docs and support on BuddyPress.org to avoid fragmentation, and to maintain user trust. I agreed it was best and opened a ticket on the Meta Trac (See #4601) to move forward.
Updates about the Tickets into the 5.0.0 milestone
It would be great to have the patches attached to the following list of tickets tested during the next 2 weeks:
- #8013 : BuddyPress Data Export Screen should not show WordPress/BuddyPress to users
- #8026 : Default avatar choices show same generated icon in general discussion settings
- #8079 : BP Site-wide Notices: To enable paragraphs in the body text of the notification.
- #8103 : BP-Legacy needs a companion stylesheet for Twenty Nineteen
Next dev-chat
It will happen on July 24th at 19:00 UTC in #BuddyPress slack channel. In the meantime: have fun contributing to BuddyPress 👩🏻💻, we have 1 month left before 5.0.0 first beta 🗓