管理使用者註冊

管理使用者註冊

Codex Home → Administrator Guide → Manage User Signups
Manage User Signups

There are times when prospective members cannot log in after trying to activate their accounts. BuddyPress has got you covered with a new administrative panel added to the Users screen. You can check the registrant』s status by either:

wp-admin menu Users > click on the Pending link, orwp-admin menu Users > Manage Signups which will bring you directly to the panel.

The Pending users panel lets you see a list of signups that have not yet been activated. Perform common tasks with pending signups:

manually activate accounts,resend activation emails, ordelete the account.

Related resource:

Alternative Registration Workflows

文章型別活動

文章型別活動

Codex Home → BuddyPress Plugin Development → Post Types Activities
Post Types Activities

Note: This guide is for use with BuddyPress 2.2+.
Any public registered post type can be tracked into the activity streams once it has been published. Here are the different options to add the 「buddypress-activity」 support to a public post type.

Activate the Blogs component ( aka Site Tracking )
If you activate the Site Tracking component from the BuddyPress component』s Administration screen, the post post type will automatically have the 「buddypress-activity」 feature enable. Comments about this post type will also generate activities or, if you chose to 「allow the activity stream commenting on blog posts」 from the BuddyPress settings Administration screen, comments will be synchronized with the activity stream.
Use add_post_type_support( 『post_type』, 『buddypress-activity』 )
From your bp-custom.php file, you can also manually set a post type to be tracked into the activity stream. For instance, for the page post type you could use this code:
add_post_type_support( 'page', 'buddypress-activity' );

In this case, BuddyPress will set an activity action using generic activity attributes : the component, the generated activities will be attached to, will be the Activity component; the action type will be the post type』s name prefixed by the mention 『new_』 (in our example 『new_page』); the label of the front-end activity dropdown filters will be the name parameter of the 『labels』 argument of the post type (in our example 『Pages』); the label of the Activity Administration screens dropdown filters will be __( 'New item published', 'buddypress' ); the action string will be __( '%1$s wrote a new item', 'buddypress' ) where %1$s will be replaced by the member』s link of the post type』s author and %2$s by the url to the post type; the context will be limited to the Activity directory; commenting on generated activities about the post type will be possible if the post type is not supporting comments.
Simply by using add_post_type_support()
Customizing generic activity attributes
You can edit the generic activity attributes of a post type from your bp-custom.php file using the function bp_activity_set_post_type_tracking_args( $post_type = '', $args = array() ). Use the first parameter to inform about the post type you wish to edit the activity attributes of. The second parameter is an associative array containing the activity attributes to edit. For instance you could use this code:
// Don't forget to add the 'buddypress-activity' support!
add_post_type_support( 'page', 'buddypress-activity' );

function customize_page_tracking_args() {
// Check if the Activity component is active before using it.
if ( ! bp_is_active( 'activity' ) ) {
return;
}

bp_activity_set_post_type_tracking_args( 'page', array(
'component_id' => buddypress()->blogs->id,
'action_id' => 'new_blog_page',
'bp_activity_admin_filter' => __( 'Published a new page', 'custom-domain' ),
'bp_activity_front_filter' => __( 'Pages', 'custom-domain' ),
'contexts' => array( 'activity', 'member' ),
'activity_comment' => true,
'bp_activity_new_post' => __( '%1$s posted a new page', 'custom-textdomain' ),
'bp_activity_new_post_ms' => __( '%1$s posted a new page, on the site %3$s', 'custom-textdomain' ),
'position' => 100,
) );
}
add_action( 'bp_init', 'customize_page_tracking_args' );

Using add_post_type_support() and customizing activity attributes.
Below a description of the parameters used above:

$component_id
The unique string ID of the component the activity action is attached to, defaults to 『activity』
$action_id
A string that describes the action type and that is used in the front-end and in the Activity Administration screens as the value of the activity dropdown filters, defaults to 『new_{post_type_name}』
$bp_activity_admin_filter
A string that describes the action description and that is used in the Activity Administration screens as the label of the activity dropdown filters.
$bp_activity_front_filter
A string that describes the action label of the activity front-end dropdown filters.
$contexts
An array that describes the Activity stream contexts where the filter should appear. Possible values are 『activity』, 『member』, 『member_groups』, 『group』.
$activity_comment
A boolean to allow/disallow comments on the activity items. Defaults to true if the post type does not natively support comments, otherwise false.
$bp_activity_new_post
A string containing the custom action string to use for regular configs. Defaults to __( '%1$s wrote a new item', 'buddypress' )
$bp_activity_new_post_ms
A string containing the custom action string to use for multisite configs. Defaults to __( '%1$s wrote a new item, on the site %3$s', 'buddypress' )
$position
An integer to set the order of the action within the component』s actions

Adding the 「buddypress-support」 and specific labels at post type registration
When registering a post type in WordPress it』s also possible to set the 『buddypress-activity』 feature using the support parameter of the second argument of the register_post_type() function. Custom activity action strings can be defined within the labels parameter and activity attributes can be set using the parameter 『bp_activity』. See below for an example of use.
function plugin_registers_post_type() {
$args = array(
'public' => true,
'labels' => array(
'name' => __( 'Books', 'your-plugin-textdomain' ),
'singular_name' => __( 'Book', 'your-plugin-textdomain' ),
'bp_activity_admin_filter' => __( 'New book published', 'your-plugin-textdomain' ),
'bp_activity_front_filter' => __( 'Books', 'your-plugin-textdomain' ),
'bp_activity_new_post' => __( '%1$s posted a new book', 'your-plugin-textdomain' ),
'bp_activity_new_post_ms' => __( '%1$s posted a new book, on the site %3$s', 'your-plugin-textdomain' ),
),
'supports' => array( 'title', 'editor', 'buddypress-activity' ),
'bp_activity' => array(
'component_id' => buddypress()->activity->id,
'action_id' => 'new_book',
'contexts' => array( 'activity', 'member' ),
'position' => 40,
),
);
register_post_type( 'book', $args );
}
add_action( 'init', 'plugin_registers_post_type' );

Important note: public parameter should be defined and set to true, otherwise the connection between post type and Activity component won』t be established.
Customizing Post Type Activity Content
You can customize the activity action of a Post Type via the register_post_type() example above. If you want to customize the Post Type activity content you can filter bp_before_activity_add_parse_args or bp_after_activity_add_parse_args.
function record_cpt_activity_content( $cpt ) {

if ( 'new_book' === $cpt['type'] ) {

$cpt['content'] = 'what you need';
}

return $cpt;
}
add_filter('bp_before_activity_add_parse_args', 'record_cpt_activity_content');

Tracking comments about a Post Type
Version 2.5 is bringing Post Type comments tracking into the Activity stream for the Post Types supporting the 'comments' and the 'buddypress-activity' features. You can set the comments tracking feature to an existing Post Type or during the Post Type registration by adding the 'comment_action_id' specific parameter. If you wish to customize dropdown filter labels and action strings, you simply need to define some extra parameters. Here is the list of the available parameters :

$comment_action_id
A string that describes the action type and that is used in the front-end and in the Activity Administration screens as the value of the activity dropdown filters
$bp_activity_comments_admin_filter
A string that describes the action description and that is used in the Activity Administration screens as the label of the activity dropdown filters.
$bp_activity_comments_front_filter
A string that describes the action label of the activity front-end dropdown filters.
$bp_activity_new_comment
A string containing the custom action string to use for regular configs. Defaults to __( '%1$s commented on the item', 'buddypress' )
$bp_activity_new_comment_ms
A string containing the custom action string to use for multisite configs. Defaults to __( '%1$s commented on the item, on the site %3$s', 'buddypress' )

1. Add comments tracking to an Existing Post Type
Below is an example of code to put into your bp-custom.php file to add the comments tracking feature to the 「page」 Post Type.
function customize_page_tracking_args() {
// Check if the Activity component is active before using it.
if ( ! bp_is_active( 'activity' ) ) {
return;
}

// Don't forget to add the 'buddypress-activity' support!
add_post_type_support( 'page', 'buddypress-activity' );

/**
* Also don't forget to allow comments from the WordPress Edit Page screen
* see this screencap https://cldup.com/nsl4TxBV_j.png
*/

bp_activity_set_post_type_tracking_args( 'page', array(
'action_id' => 'new_blog_page',
'bp_activity_admin_filter' => __( 'Published a new page', 'custom-textdomain' ),
'bp_activity_front_filter' => __( 'Page', 'custom-textdomain' ),
'bp_activity_new_post' => __( '%1$s posted a new page', 'custom-textdomain' ),
'bp_activity_new_post_ms' => __( '%1$s posted a new page, on the site %3$s', 'custom-textdomain' ),
'contexts' => array( 'activity', 'member' ),
'comment_action_id' => 'new_blog_page_comment',
'bp_activity_comments_admin_filter' => __( 'Commented a page', 'custom-textdomain' ),
'bp_activity_comments_front_filter' => __( 'Pages Comments', 'custom-textdomain' ),
'bp_activity_new_comment' => __( '%1$s commented on the page', 'custom-textdomain' ),
'bp_activity_new_comment_ms' => __( '%1$s commented on the page, on the site %3$s', 'custom-textdomain' ),
'position' => 100,
) );
}
add_action( 'bp_init', 'customize_page_tracking_args' );

2. Add comments tracking feature during the Post Type registration
Below is an example of code to put into your bp-custom.php file to registyer a 「foo」 Post Type and directly set the 'buddypress-activity' and 'comments' supports during this registration.
$labels = array(
'name' => 'foos',
'singular_name' => 'foo',
'bp_activity_comments_admin_filter' => __( 'Comments about foos', 'custom-textdomain' ), // label for the Admin dropdown filter
'bp_activity_comments_front_filter' => __( 'Foo Comments', 'custom-textdomain' ), // label for the Front dropdown filter
'bp_activity_new_comment' => __( '%1$s commented on the foo', 'custom-textdomain' ),
'bp_activity_new_comment_ms' => __( '%1$s commented on the foo, on the site %3$s', 'custom-textdomain' )
);

register_post_type( 'foo', array(
'labels' => $labels,
'public' => true,
'supports' => array( 'buddypress-activity', 'comments' ), // Adding the comments support
'bp_activity' => array(
'action_id' => 'new_foo', // The activity type for posts
'comment_action_id' => 'new_foo_comment', // The activity type for comments
),
) );

Notes
On multisite configurations, the post types that are registered on any sub-site will need to be registered on the root site in order to be listed in the Activity dropdown filters. That』s the case for the post and page post types
Some of you may have used the 'bp_blogs_record_post_post_types' filter to include custom post types to the site tracking having the Blogs component activated. These post types will keep on being included as long as the Blogs component is active.
About Post Type comments tracking: if the Blogs component (Site Tracking) is active and if the 「Allow activity stream commenting on blog and forum posts」 setting is checked, comments about the Post Type will be synchronized with the activity comments about the corresponding Post Type activity.

Related Resources

register_post_type() WordPress Codex page
Posting activities from plugins
Activity dropdown filters in templates
More details and explanation in this topic
More details and possible field values on bp_activity_set_action() page

bp_notifications_add_notification

bp_notifications_add_notification

Codex Home → Developer Resources → Function Examples → bp_notifications_add_notification
bp_notifications_add_notification

bp_notifications_add_notification() is used to insert new notifications into the database table $wpdb->bp_notifications.
Notifications were refactored to be a separate component for BP 1.9
Usage
$notification_id = bp_notifications_add_notification( $args );
@return int|bool ID of the newly created notification on success, false on failure.
Default args
array(
'user_id' => 0,
'item_id' => 0,
'secondary_item_id' => 0,
'component_name' => '',
'component_action' => '',
'date_notified' => bp_core_current_time(),
'is_new' => 1, );
Parameters

$args
An array that describes the notification item that you』re creating. Possible values:

'user_id'
(optional) ID of the user to associate the notification with.
'item_id'
(optional) ID of the item to associate the notification with.
'secondary_item_id'
(optional) ID of the secondary item to associate the notification with.
'component_name'
(optional) Name of the component to associate the notification with.
'component_action'
(optional) Name of the action to associate the notification with.
'date_notified'
(optional) Timestamp for the notification.
'is_new'
(optional) Whether the notification is new. This will be set to 0 once the notification is viewed by the recipient.

Example
This is taken from buddypress/bp-activity/bp-activity-notifications.php and shows how the parameters can be used.
function bp_activity_at_mention_add_notification( $activity, $subject, $message, $content, $receiver_user_id ) {
if ( bp_is_active( 'notifications' ) ) {
bp_notifications_add_notification( array(
'user_id' => $receiver_user_id,
'item_id' => $activity->id,
'secondary_item_id' => $activity->user_id,
'component_name' => buddypress()->activity->id,
'component_action' => 'new_at_mention',
'date_notified' => bp_core_current_time(),
'is_new' => 1,
) );
}
}
add_action( 'bp_activity_sent_mention_email', 'bp_activity_at_mention_add_notification', 10, 5 );

Source File
bp_notifications_add_notification() is located in bp-notifications/bp-notifications-functions.php

在 WordPress 多站點中安裝

在 WordPress 多站點中安裝

Codex Home → Getting Started → Installation in WordPress Multisite
Installation in WordPress Multisite

Before installing BuddyPress, please make sure that you』ve checked the minimum server requirements and WordPress version compatibility.
You can install BuddyPress in your Network (multisite) in either of the following setups.
Network-wide
A. BuddyPress root blog in Main Site
B. BuddyPress root blog in Secondary Site
One site of the Network
C. BuddyPress Activated in Main Site only
D. BuddyPress Activated in Secondary Site only
Posts, comments, or activities of the users in sites other than where you activated BuddyPress won』t be recorded in the Activity Streams when you install BuddyPress in only one site of the network.
Special Setups
E. BP_ENABLE_MULTIBLOG – network activated
F. BuddyPress Multisite – network activated
A. Network-wide Activation – BuddyPress root blog in Main Site

Go to Dashboard → Network Admin.
Add BuddyPress through Plugins → Add New.
Activate BuddyPress.
Configure BuddyPress for Multisite.

B. Network-wide Activation – BuddyPress root blog in Secondary Site

Go to Dashboard → Network Admin.
Click on Sites link.
Find the ID number of the site you want to be the root site of your BuddyPress installation.
Open up your installation』s wp-config.php file.
Add
define ( 'BP_ROOT_BLOG', $blog_id );
to your wp-config.php file where $blog_id is the ID number of your chosen site and save the file.
Go to Dashboard → Network Admin.
Add BuddyPress through Plugins → Add New.
Activate BuddyPress. You will be redirected to the BuddyPress Welcome screen.
Configure BuddyPress for Multisite.

C. Activate BuddyPress in the Main Site of the Network only

Go to Dashboard → Network Admin.
Add BuddyPress through Plugins → Add New.
Proceed to the Dashboard of the Main Site.
Navigate to Plugins → Plugins .
Activate BuddyPress. You will be redirected to the BuddyPress Welcome screen.
Configure BuddyPress.

D. Activate BuddyPress in only one of the Secondary Sites of the Network

Go to Dashboard → Network Admin.
Click on Sites link.
Find the ID number of the site you want to be the root site of your BuddyPress installation.
Open up your installation』s wp-config.php file.
Add
define ( 'BP_ROOT_BLOG', $blog_id );
to your wp-config.php file where $blog_id is the ID number of your chosen site and save the file.
Go to Dashboard → Network Admin.
Add BuddyPress through Plugins → Add New.
Navigate to the subsite which you identified in your wp-config.php file earlier
Activate BuddyPress. You will be redirected to the BuddyPress Welcome screen.
Configure BuddyPress.

F. BuddyPress MultiSite
This extends BuddyPress network instance from one site or subsite to multiple BuddyPress instances in a WordPress Multisite installation. This setup is complicated and would require BuddyPress/WordPress expertise plus server administration skills. You would need to install plugins to be able to configure this set up such as:
– BP Multi Network (WordPress plugin repository) or
– BuddyPress Multi Network (BuddyDev.com)
Please post in the respective forums if you would need assistance with either.

⇒ Next: Configure BuddyPress
or
⇒ Next: Configure BuddyPress for Network-wide set ups
⇐Previous: Getting Started

Twenty Ten Theme 二〇一〇主題

Twenty Ten Theme 二〇一〇主題

Codex Home → BuddyPress Theme Development → BP Theme Compatibility and the WordPress Default Themes → Twenty Ten Theme
Twenty Ten Theme

A. One column Layout
One column Layout. Click on image to enlarge.If you prefer to have a one column layout for all your BuddyPress pages, follow the steps below.
1. Create a child theme of the Twenty Ten theme.
2. Create a new file in your new child theme folder and name it buddypress.php.
3. The Twenty Ten theme has a one column page template, fortunately. All you need to do is copy over the entire source code of Twenty Ten』s onecolumn-page.php file into the new buddypress.php file and save file.
?1234567891011121314151617         

            

                             

        

 
4. Upload your Twenty Ten child theme folder to your server.
B. Full-width page Layout
Full-width Layout. Click on image to enlarge.If you prefer to have a full-width layout for all your BuddyPress pages, follow the steps below.
1. Create a child theme of the Twenty Ten theme.
2. Create a new file in your new child theme folder and name it buddypress.php.
3. Copy over the content of Twenty Ten theme』s onecolumn-page.php file into the new buddypress.php file.
?1234567891011121314151617         

            

                               

        

 
5. We will simply copy the theme』s one column style and then prepend the buddypress body class to override the theme』s one column styling. Open up your child theme』s style.css file and add the following at the bottom of the file then save the file.
?1234.buddypress #container.one-column {        margin: 0;        width: 100%;}
6. Upload your Twenty Ten child theme folder to your server.
C. Two Column, Right Sidebar Layout
Two-column Layout. Click on image to enlarge.This is the default page layout of the Twenty Ten theme. There is no need to do anything more if this is the layout you prefer for all your BuddyPress pages.
However, if you want to customize the sidebar content of all your BP pages, you can do so by: a) using a plugin like Widget Logic to assign widgets to specific pages by using conditional tags or b) by creating new buddypress.php and sidebar-buddypress.php files and registering a new widget area in your child theme』s functions.php file. The following steps are for the second option.
1. Create a child theme of the Twenty Ten theme.
2. Create a new file in your new child theme folder and name it buddypress.php.
3. Open up the page.php file of the Twenty Ten theme and copy all content within and paste that content into your new buddypress.php file. Then change to and save file.
?123456789101112131415161718         

            

                               

        

 
4. If you don』t have a functions.php file in your child theme, create one. You』ll need to register the new widget area for your BP sidebar in that functions.php file like so:
?1234567891011121314 __( 'BuddyPress Sidebar Widget Area', 'mmechildtheme' ),        'id'            => 'bp-sidebar',        'description'   => __( 'Appears in the sidebar section of all BuddyPress pages.', 'mmechildtheme' ),        'before_widget' => '

  • ',        'after_widget'  => '
  • ',        'before_title'  => '

    ',        'after_title'   => '

    ',    ) );}add_action( 'widgets_init', 'mme_register_bp_widgets_area' );
    5. Create a new file in your child theme folder and name it sidebar-buddypress.php.
    6. Add the following in your new sidebar-buddypress.php and save file:
    ?12345678910111213141516171819     

     
    7. Upload your child theme folder to your server. You』ll need to add at least one widget to the BP Sidebar widget area.

    模板更新 2.1

    模板更新 2.1

    Codex Home → BuddyPress Theme Development → Updating Custom Themes For New Functionality → Template Updates 2.1
    Template Updates 2.1

    BuddyPress 2.1 introduced three new features that specifically require template updates in order that they function.

    @mentions Interface
    Password Strength Meter
    Activity Show Filters

    @mentions Auto Suggest
    @mentions introduces a drop down panel that will auto suggest user names to select from the characters you start typing. For this feature to work you will need to update your templates in two specific places or files

    buddypress/activity/entry.php
    buddypress/activity/post-form.php

    In both of these files you need to locate the textarea elements and add the class 『bp-suggestions』 respectively:
    ?1<textarea id="ac-input-" class="ac-input bp-suggestions" name="ac_input_">

    ?1

    @mentions also requires two new JS files and CSS styles to support the display of the dropdown, these files are loaded from the core directories so themes shouldn』t have to worry about including these.
    Password Strength
    Password Strength Meter This feature requires adjustments and new files as follows:

    buddypress-functions.php
    buddypress/members/register.php
    buddypress/members/single/settings/general.php (user account password update screen)
    css/buddypress.css
    js/password-verify.js

    The buddypress-functions.php adjustment most likely won』t be required but if it is you need to make these changes.
    Just below the wp_enqueue_script(『comment-reply』) at around line 257 add:
    ?1234567891011121314// Maybe enqueue password verify JS (register page or user settings page)        if ( bp_is_register_page() || ( function_exists( 'bp_is_user_settings_general' ) && bp_is_user_settings_general() ) ) {            $min      = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';            $filename = "password-verify{$min}.js";             // Locate the Register Page JS file            $asset = $this->locate_asset_in_stack( $filename, 'js' );             // Enqueue script            $dependencies = array_merge( bp_core_get_js_dependencies(), array(                'password-strength-meter',            ) );            wp_enqueue_script( $asset['handle'] . '-password-verify', $asset['location'], $dependencies, $this->version);        }
    register.php requires the addition of a new element to hold the password strength display, and also note the additional classes on the existing input controls, as follows:
    ?12

    ?1
    general.php requires similar changes as register.php as follows:
    ?123  

     
    Styles are required primarily to provide a background color separation between the various strength strings returned and those added to Buddypress are as follows – although you may want to modify these to suit your theme styling
    ?1234567891011121314151617181920212223242526272829303132333435#buddypress #pass-strength-result {    background-color: #eee;    border-color: #ddd;    border-style: solid;    border-width: 1px;    display: none;    margin: 5px 5px 5px 0;    padding: 5px;    text-align: center;    width: 150px;}#buddypress .standard-form #basic-details-section #pass-strength-result {    width: 35%;}#buddypress #pass-strength-result.error,#buddypress #pass-strength-result.bad {    background-color: #ffb78c;    border-color: #ff853c !important;    display: block;}#buddypress #pass-strength-result.good {    background-color: #ffec8b;    border-color: #fc0 !important;    display: block;}#buddypress #pass-strength-result.short {    background-color: #ffa0a0;    border-color: #f04040 !important;    display: block;}#buddypress #pass-strength-result.strong {    background-color: #c3ff88;    border-color: #8dff1c !important;    display: block;}
    Lastly is the addition of a JS file 『password-verify.js』 this can be copied over from the bp legacy js directory or simply left in place as themes should inherit it』s functionality.
    Activity 『Show』 filters
    In 2.1 the activity filters were updated to dynamically generate the filter options, this allows for additional options to be passed in by plugins and CPT』s
    Previously these filters were hardcoded select options in activity/index.php, groups/single/activity.php, and members/single/activity.php now those hardcoded options are replaced with a single function call:
    ?1bp_activity_show_filters()

    It』s important to retain the first option though which resets the display to 『Everything』. On the groups activity page we need to pass an additional parameter to tell the function it』s the groups component so we add:
    ?1bp_activity_show_filters('group')

    A full and detailed explanation of these changes is available in this codex page:
    Activity Dropdown Filters in Templates

    將元框新增到管理員擴充套件個人資料

    將元框新增到管理員擴充套件個人資料

    Codex Home → Developer Resources → Add Meta Box to Admin Extended User Profile
    Add Meta Box to Admin Extended User Profile

    BuddyPress 2.0 allows admins to edit user profile fields from the Dashboard>>Users>>Edit User page. This extended profile page offers the ability to add your own settings for a user. This page gives a simple example of how to add the meta boxes to the extended profile page. What you add to the meta box can be a myriad of options. NOTE: any meta boxes you add are only editable by an admin. The info does not show on the front end user profile. You can put this example code in your bp-custom.php file.

    This function adds our meta box to the the user extended profile page in the admin.
    function bp_user_meta_box() {

    add_meta_box(
    'metabox_id',
    __( 'Metabox Title', 'buddypress' ),
    'bp_user_inner_meta_box', // function that displays the contents of the meta box
    get_current_screen()->id
    );
    }
    add_action( 'bp_members_admin_user_metaboxes', 'bp_user_meta_box' );

     
    This function outputs the content of the meta box. The skies the limit here. You can add almost any information to want. You could have a meta box that you enter notes about that user or show information from another plugin.
    function bp_user_inner_meta_box() {
    ?>

    This is where you write your form inputs for user settings. Or you can output information pertaining to this user. For example, the Achievements plugin could show the users badges here.

    <?php
    }

     
    This function saves any form inputs you might include in the meta box.
    function bp_user_save_metabox() {

    if( isset( $_POST['save'] ) ) {

    $user_id = isset( $_GET['user_id'] ) ? $_GET['user_id'] : 0;

    // you will need to use a $_POST param and validate before saving
    $meta_val = isset( $_POST['form_value'] ) ? sanitize_text_field( $_POST['form_value'] ) : '';

    // the $meta_val would be a $_POST param from inner meta box form
    update_user_meta( $user_id, 'user_meta_key', $meta_val );
    }
    }
    add_action( 'bp_members_admin_update_user', 'bp_user_save_metabox' );

    啟動期間的 BuddyPress 操作掛鉤序列

    啟動期間的 BuddyPress 操作掛鉤序列

    Codex Home → Developer Resources → BuddyPress Action Hook Sequence During Startup
    BuddyPress Action Hook Sequence During Startup

    When writing BuddyPress themes and plugins, it can be essential to know the sequence in which action hooks are invoked. The diagram below is especially useful during the site loading process, and will help you make better informed choices of actions to hook into for the loading and initialization of your plugin or theme.
    The diagram is a visual representation of nested hook invocations during startup — from the moment a request gets to a WordPress site, to when BuddyPress (and other plugins) are fully loaded and the response is ready to be sent back to the browser. Names of the hooks being triggered are shown in green. Callback functions which have been registered to respond to the hooks, by plugins and the active theme, are shown in beige. BuddyPress hooks are prefixed by 『bp_『.
    The text 『_NO_CALLBACK_『 is used for entries where the hook has no registered callback. Note that some registered callbacks shown below belong to other plugins and the active theme, to show the action sequence for a regularly configured home page.

    Action HookRegistered Callback Function

    muplugins_loaded_NO_CALLBACK_

    registered_taxonomy_NO_CALLBACK_

    registered_taxonomy_NO_CALLBACK_

    registered_taxonomy_NO_CALLBACK_

    registered_taxonomy_NO_CALLBACK_

    registered_taxonomy_NO_CALLBACK_

    registered_post_type_NO_CALLBACK_

    registered_post_type_NO_CALLBACK_

    registered_post_type_NO_CALLBACK_

    registered_post_type_NO_CALLBACK_

    registered_post_type_NO_CALLBACK_

    load_textdomain_NO_CALLBACK_

    load_textdomain_NO_CALLBACK_

    plugins_loadedwp_maybe_load_widgets()

    plugins_loadedwp_maybe_load_embeds()

    plugins_loadedwpcf7_load_modules()

    plugins_loadedjet_event_system_load_textdomain()

    plugins_loadedwpcf7_set_request_uri()

    plugins_loaded_wp_customize_include()

    plugins_loadedbp_show_friends_register_widgets()

    plugins_loadedbp_loaded()
    bp_loadedbp_setup_components()
    bp_setup_componentsbp_setup_core()
    bp_core_setup_actions_NO_CALLBACK_

    bp_core_loadedbp_core_load_buddypress_textdomain()
    load_textdomain_NO_CALLBACK_

    load_textdomain_NO_CALLBACK_

    load_textdomain_NO_CALLBACK_

    bp_setup_componentsbp_setup_activity()
    bp_activity_setup_actions_NO_CALLBACK_

    bp_setup_componentsbp_setup_blogs()
    bp_blogs_setup_actions_NO_CALLBACK_

    bp_setup_componentsbp_setup_forums()
    bp_forums_setup_actions_NO_CALLBACK_

    bp_setup_componentsbp_setup_friends()
    bp_friends_setup_actions_NO_CALLBACK_

    bp_setup_componentsbp_setup_groups()
    bp_groups_setup_actions_NO_CALLBACK_

    bp_setup_componentsbp_setup_messages()
    bp_messages_setup_actions_NO_CALLBACK_

    bp_setup_componentsbp_setup_notifications()
    bp_notifications_setup_actions_NO_CALLBACK_

    bp_setup_componentsbp_setup_settings()
    bp_settings_setup_actions_NO_CALLBACK_

    bp_setup_componentsbp_setup_xprofile()
    bp_xprofile_setup_actions_NO_CALLBACK_

    bp_setup_componentsbp_setup_members()
    bp_members_setup_actions_NO_CALLBACK_

    bp_loadedbp_include()
    bp_include[BP_Core]->includes()

    bp_include[BP_Activity_Component]->includes()
    bp_activity_includes_NO_CALLBACK_

    bp_include[BP_Blogs_Component]->includes()
    bp_blogs_includes_NO_CALLBACK_

    bp_include[BP_Forums_Component]->includes()
    bp_forums_includes_NO_CALLBACK_

    bp_include[BP_Friends_Component]->includes()
    bp_friends_includes_NO_CALLBACK_

    bp_include[BP_Groups_Component]->includes()
    bp_groups_includes_NO_CALLBACK_

    bp_include[BP_Messages_Component]->includes()
    bp_messages_includes_NO_CALLBACK_

    bp_include[BP_Notifications_Component]->includes()
    bp_notifications_includes_NO_CALLBACK_

    bp_include[BP_Settings_Component]->includes()
    bp_settings_includes_NO_CALLBACK_

    bp_include[BP_XProfile_Component]->includes()
    bp_xprofile_includes_NO_CALLBACK_

    bp_include[BP_Members_Component]->includes()
    bp_members_includes_NO_CALLBACK_

    bp_includebpa_init()
    load_textdomain_NO_CALLBACK_

    bpa_init_NO_CALLBACK_

    bp_includebp_group_organizer_register_admin()

    bp_includebp_activity_setup_akismet()

    bp_includeetivite_bp_restrictgroups_init()

    bp_loadedbp_setup_widgets()
    bp_register_widgetsbp_core_register_widgets()

    bp_register_widgetsbp_friends_register_widgets()

    bp_register_widgetsgroups_register_widgets()

    bp_register_widgetsbp_messages_register_widgets()

    bp_loadedbp_core_add_global_group()

    bp_loadedbp_members_signup_sanitization()

    bp_loadedbp_register_theme_packages()
    bp_register_theme_packages[BuddyPress]->register_theme_packages()

    bp_loadedbp_register_theme_directory()
    bp_register_theme_directory[BuddyPress]->register_theme_directory()

    plugins_loadedadd_embedly_providers()

    plugins_loaded[jQueryLightbox]->plugins_loaded()
    doing_it_wrong_run_NO_CALLBACK_

    sanitize_comment_cookiessanitize_comment_cookies()

    setup_themepreview_theme()

    setup_themebp_setup_theme()
    bp_setup_theme[BuddyPress]->setup_theme()

    load_textdomain_NO_CALLBACK_

    auth_cookie_malformed_NO_CALLBACK_

    auth_cookie_valid_NO_CALLBACK_

    set_current_userkses_init()

    set_current_userbp_setup_current_user()
    doing_it_wrong_run_NO_CALLBACK_

    bp_setup_current_user[BuddyPress]->setup_current_user()

    register_sidebar_NO_CALLBACK_

    after_setup_themebp_dtheme_setup()

    after_setup_themebp_dtheme_deprecated()

    after_setup_themebp_die_legacy_ajax_callbacks()

    after_setup_themebp_dtheme_register_actions()

    after_setup_themebp_after_setup_theme()
    bp_after_setup_themebp_load_theme_functions()

    initcreate_initial_post_types()
    registered_post_type_NO_CALLBACK_

    registered_post_type_NO_CALLBACK_

    registered_post_type_NO_CALLBACK_

    registered_post_type_NO_CALLBACK_

    registered_post_type_NO_CALLBACK_

    initcreate_initial_taxonomies()
    registered_taxonomy_NO_CALLBACK_

    registered_taxonomy_NO_CALLBACK_

    registered_taxonomy_NO_CALLBACK_

    registered_taxonomy_NO_CALLBACK_

    registered_taxonomy_NO_CALLBACK_

    init[WP_Scripts]->init()

    initdr_email_load_language()
    load_textdomain_NO_CALLBACK_

    load_textdomain_NO_CALLBACK_

    initwp_widgets_init()
    widgets_initbp_widgets_init()
    bp_widgets_init_NO_CALLBACK_

    widgets_initlambda_2615()

    widgets_initlambda_2616()

    widgets_initlambda_2617()

    widgets_initlambda_2618()

    widgets_initlambda_2619()

    widgets_initlambda_2620()

    widgets_initlambda_2621()

    widgets_initlambda_2622()

    widgets_initlambda_2623()

    widgets_initlambda_2624()

    widgets_initbp_dtheme_widgets_init()
    register_sidebar_NO_CALLBACK_

    register_sidebar_NO_CALLBACK_

    register_sidebar_NO_CALLBACK_

    register_sidebar_NO_CALLBACK_

    register_sidebar_NO_CALLBACK_

    widgets_init[WP_Widget_Factory]->_register_widgets()
    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    wp_register_sidebar_widget_NO_CALLBACK_

    initbp_blogs_maybe_add_user_to_blog()

    initsmilies_init()

    initbp_core_load_admin_bar()

    initwp_cron()
    update_option_NO_CALLBACK_

    update_option__transient_doing_cron_NO_CALLBACK_

    updated_option_NO_CALLBACK_

    set_transient__transient_doing_cron_NO_CALLBACK_

    setted_transient_NO_CALLBACK_

    http_api_debug_NO_CALLBACK_

    init_show_post_preview()

    initkses_init()

    initwp_schedule_update_checks()

    initbp_init()
    bp_initbp_show_friends_load_textdomain()

    bp_initbp_core_set_uri_globals()

    bp_initbp_core_set_avatar_constants()

    bp_initbp_setup_globals()
    bp_setup_globalsbp_album_setup_globals()

    bp_setup_globalsbp_core_set_avatar_globals()
    bp_core_set_avatar_globals_NO_CALLBACK_

    bp_setup_globalsjes_events_setup_globals()
    jes_events_setup_globals_NO_CALLBACK_

    bp_setup_globals[BP_Core]->setup_globals()
    bp_core_setup_globals_NO_CALLBACK_

    bp_setup_globals[BP_Activity_Component]->setup_globals()
    bp_activity_setup_globals_NO_CALLBACK_

    bp_setup_globals[BP_Blogs_Component]->setup_globals()
    bp_blogs_setup_globals_NO_CALLBACK_

    bp_setup_globals[BP_Forums_Component]->setup_globals()
    bp_forums_setup_globals_NO_CALLBACK_

    bp_setup_globals[BP_Friends_Component]->setup_globals()
    bp_friends_setup_globals_NO_CALLBACK_

    bp_setup_globals[BP_Groups_Component]->setup_globals()
    bp_groups_setup_globals_NO_CALLBACK_

    bp_setup_globals[BP_Messages_Component]->setup_globals()
    bp_messages_setup_globals_NO_CALLBACK_

    bp_setup_globals[BP_Notifications_Component]->setup_globals()
    bp_notifications_setup_globals_NO_CALLBACK_

    bp_setup_globals[BP_Settings_Component]->setup_globals()
    bp_settings_setup_globals_NO_CALLBACK_

    bp_setup_globals[BP_XProfile_Component]->setup_globals()
    bp_xprofile_setup_globals_NO_CALLBACK_

    bp_setup_globals[BP_Members_Component]->setup_globals()
    bp_members_setup_globals_NO_CALLBACK_

    bp_setup_globalsbp_core_define_slugs()

    bp_initbp_stop_live_spammer()

    bp_initbp_setup_nav()
    bp_setup_navbp_setup_privacy_nav()

    bp_setup_navevents_setup_nav()
    events_setup_nav_NO_CALLBACK_

    bp_setup_nav[BP_Core]->setup_nav()

    bp_setup_nav[BP_Activity_Component]->setup_nav()
    bp_activity_setup_nav_NO_CALLBACK_

    bp_setup_nav[BP_Blogs_Component]->setup_nav()

    bp_setup_nav[BP_Forums_Component]->setup_nav()
    bp_forums_setup_nav_NO_CALLBACK_

    bp_setup_nav[BP_Friends_Component]->setup_nav()
    bp_friends_setup_nav_NO_CALLBACK_

    bp_setup_nav[BP_Groups_Component]->setup_nav()
    bp_groups_setup_nav_NO_CALLBACK_

    groups_setup_nav_NO_CALLBACK_

    bp_setup_nav[BP_Messages_Component]->setup_nav()
    bp_messages_setup_nav_NO_CALLBACK_

    bp_setup_nav[BP_Notifications_Component]->setup_nav()
    bp_notifications_setup_nav_NO_CALLBACK_

    bp_setup_nav[BP_Settings_Component]->setup_nav()
    bp_settings_setup_nav_NO_CALLBACK_

    bp_setup_nav[BP_XProfile_Component]->setup_nav()
    bp_core_new_nav_item_NO_CALLBACK_

    bp_xprofile_setup_nav_NO_CALLBACK_

    bp_setup_nav[BP_Members_Component]->setup_nav()

    bp_setup_navbp_album_setup_nav()

    bp_initbp_setup_root_components()
    bp_setup_root_componentsevents_setup_root_component()

    bp_initbp_core_action_search_site()

    bp_initbp_setup_title()
    bp_setup_title[BP_Core]->setup_title()
    bp_core_setup_title_NO_CALLBACK_

    bp_setup_title[BP_Activity_Component]->setup_title()
    bp_activity_setup_title_NO_CALLBACK_

    bp_setup_title[BP_Blogs_Component]->setup_title()
    bp_blogs_setup_title_NO_CALLBACK_

    bp_setup_title[BP_Forums_Component]->setup_title()
    bp_forums_setup_title_NO_CALLBACK_

    bp_setup_title[BP_Friends_Component]->setup_title()
    bp_friends_setup_title_NO_CALLBACK_

    bp_setup_title[BP_Groups_Component]->setup_title()
    bp_groups_setup_title_NO_CALLBACK_

    bp_setup_title[BP_Messages_Component]->setup_title()
    bp_messages_setup_title_NO_CALLBACK_

    bp_setup_title[BP_Notifications_Component]->setup_title()
    bp_notifications_setup_title_NO_CALLBACK_

    bp_setup_title[BP_Settings_Component]->setup_title()
    bp_settings_setup_title_NO_CALLBACK_

    bp_setup_title[BP_XProfile_Component]->setup_title()
    bp_xprofile_setup_title_NO_CALLBACK_

    bp_setup_title[BP_Members_Component]->setup_title()
    bp_members_setup_title_NO_CALLBACK_

    bp_initbp_register_activity_actions()
    bp_register_activity_actionsevents_register_activity_actions()
    events_register_activity_actions_NO_CALLBACK_

    bp_register_activity_actionsbp_activity_register_activity_actions()
    bp_activity_register_activity_actions_NO_CALLBACK_

    updates_register_activity_actions_NO_CALLBACK_

    bp_register_activity_actionsbp_blogs_register_activity_actions()
    bp_blogs_register_activity_actions_NO_CALLBACK_

    bp_register_activity_actionsfriends_register_activity_actions()
    friends_register_activity_actions_NO_CALLBACK_

    bp_register_activity_actionsgroups_register_activity_actions()
    groups_register_activity_actions_NO_CALLBACK_

    bp_register_activity_actionsxprofile_register_activity_actions()
    xprofile_register_activity_actions_NO_CALLBACK_

    bp_initbp_embed_init()

    bp_initbp_core_load_buddybar_css()

    bp_init_bp_maybe_remove_redirect_canonical()

    bp_initbp_profile_privacy_init()

    bp_initfriends_action_add_friend()

    bp_initfriends_action_remove_friend()

    bp_initbp_core_wpsignup_redirect()

    bp_initbp_core_load_admin_bar_css()

    bp_initbp_add_rewrite_tags()
    bp_add_rewrite_tags[BuddyPress]->add_rewrite_tags()

    bp_add_rewrite_tags[BP_Core]->add_rewrite_tags()
    bp_core_add_rewrite_tags_NO_CALLBACK_

    bp_add_rewrite_tags[BP_Activity_Component]->add_rewrite_tags()
    bp_activity_add_rewrite_tags_NO_CALLBACK_

    bp_add_rewrite_tags[BP_Blogs_Component]->add_rewrite_tags()
    bp_blogs_add_rewrite_tags_NO_CALLBACK_

    bp_add_rewrite_tags[BP_Forums_Component]->add_rewrite_tags()
    bp_forums_add_rewrite_tags_NO_CALLBACK_

    bp_add_rewrite_tags[BP_Friends_Component]->add_rewrite_tags()
    bp_friends_add_rewrite_tags_NO_CALLBACK_

    bp_add_rewrite_tags[BP_Groups_Component]->add_rewrite_tags()
    bp_groups_add_rewrite_tags_NO_CALLBACK_

    bp_add_rewrite_tags[BP_Messages_Component]->add_rewrite_tags()
    bp_messages_add_rewrite_tags_NO_CALLBACK_

    bp_add_rewrite_tags[BP_Notifications_Component]->add_rewrite_tags()
    bp_notifications_add_rewrite_tags_NO_CALLBACK_

    bp_add_rewrite_tags[BP_Settings_Component]->add_rewrite_tags()
    bp_settings_add_rewrite_tags_NO_CALLBACK_

    bp_add_rewrite_tags[BP_XProfile_Component]->add_rewrite_tags()
    bp_xprofile_add_rewrite_tags_NO_CALLBACK_

    bp_add_rewrite_tags[BP_Members_Component]->add_rewrite_tags()
    bp_members_add_rewrite_tags_NO_CALLBACK_

    bp_initbp_add_rewrite_rules()
    bp_add_rewrite_rules[BP_Core]->add_rewrite_rules()
    bp_core_add_rewrite_rules_NO_CALLBACK_

    bp_add_rewrite_rules[BP_Activity_Component]->add_rewrite_rules()
    bp_activity_add_rewrite_rules_NO_CALLBACK_

    bp_add_rewrite_rules[BP_Blogs_Component]->add_rewrite_rules()
    bp_blogs_add_rewrite_rules_NO_CALLBACK_

    bp_add_rewrite_rules[BP_Forums_Component]->add_rewrite_rules()
    bp_forums_add_rewrite_rules_NO_CALLBACK_

    bp_add_rewrite_rules[BP_Friends_Component]->add_rewrite_rules()
    bp_friends_add_rewrite_rules_NO_CALLBACK_

    bp_add_rewrite_rules[BP_Groups_Component]->add_rewrite_rules()
    bp_groups_add_rewrite_rules_NO_CALLBACK_

    bp_add_rewrite_rules[BP_Messages_Component]->add_rewrite_rules()
    bp_messages_add_rewrite_rules_NO_CALLBACK_

    bp_add_rewrite_rules[BP_Notifications_Component]->add_rewrite_rules()
    bp_notifications_add_rewrite_rules_NO_CALLBACK_

    bp_add_rewrite_rules[BP_Settings_Component]->add_rewrite_rules()
    bp_settings_add_rewrite_rules_NO_CALLBACK_

    bp_add_rewrite_rules[BP_XProfile_Component]->add_rewrite_rules()
    bp_xprofile_add_rewrite_rules_NO_CALLBACK_

    bp_add_rewrite_rules[BP_Members_Component]->add_rewrite_rules()
    bp_members_add_rewrite_rules_NO_CALLBACK_

    bp_initbp_add_permastructs()
    bp_add_permastructs[BP_Core]->add_permastructs()
    bp_core_add_permastructs_NO_CALLBACK_

    bp_add_permastructs[BP_Activity_Component]->add_permastructs()
    bp_activity_add_permastructs_NO_CALLBACK_

    bp_add_permastructs[BP_Blogs_Component]->add_permastructs()
    bp_blogs_add_permastructs_NO_CALLBACK_

    bp_add_permastructs[BP_Forums_Component]->add_permastructs()
    bp_forums_add_permastructs_NO_CALLBACK_

    bp_add_permastructs[BP_Friends_Component]->add_permastructs()
    bp_friends_add_permastructs_NO_CALLBACK_

    bp_add_permastructs[BP_Groups_Component]->add_permastructs()
    bp_groups_add_permastructs_NO_CALLBACK_

    bp_add_permastructs[BP_Messages_Component]->add_permastructs()
    bp_messages_add_permastructs_NO_CALLBACK_

    bp_add_permastructs[BP_Notifications_Component]->add_permastructs()
    bp_notifications_add_permastructs_NO_CALLBACK_

    bp_add_permastructs[BP_Settings_Component]->add_permastructs()
    bp_settings_add_permastructs_NO_CALLBACK_

    bp_add_permastructs[BP_XProfile_Component]->add_permastructs()
    bp_xprofile_add_permastructs_NO_CALLBACK_

    bp_add_permastructs[BP_Members_Component]->add_permastructs()
    bp_members_add_permastructs_NO_CALLBACK_

    bp_initbp_groups_remove_edit_page_menu()

    bp_initbp_members_remove_edit_page_menu()

    initwpcf7_load_plugin_textdomain()
    load_textdomain_NO_CALLBACK_

    load_textdomain_NO_CALLBACK_

    initembedly_addbuttons()

    initjes_events_add_css()

    initregiondetect_main()

    init[wprequireauth]->wprequireauth_check_auth()

    initinit_rar()

    initwpcf7_init_switch()

    initcheck_theme_switched()

    wp_loaded_custom_header_background_just_in_time()

    parse_tax_query_NO_CALLBACK_

    parse_tax_query_NO_CALLBACK_

    posts_selection_NO_CALLBACK_

    events_directory_events_setup_NO_CALLBACK_

    bp_setup_theme_compat[BP_Activity_Theme_Compat]->is_activity()

    bp_setup_theme_compat[BP_Blogs_Theme_Compat]->is_blogs()

    bp_setup_theme_compat[BP_Forum_Legacy_Theme_Compat]->is_legacy_forum()

    bp_setup_theme_compat[BP_Groups_Theme_Compat]->is_group()

    bp_setup_theme_compat[BP_Members_Theme_Compat]->is_members()

    bp_setup_theme_compat[BP_Registration_Theme_Compat]->is_registration()

    bp_ready_NO_CALLBACK_

    template_redirect_wp_admin_bar_init()

    template_redirect_bp_rehook_maybe_redirect_404()

    template_redirectjet_events_add_ajaxjs()

    template_redirectjet_events_add_js()

    template_redirectwp_old_slug_redirect()

    template_redirectredirect_canonical()

    template_redirectbp_template_redirect()
    bp_template_redirectbp_core_catch_no_access()

    bp_template_redirectbp_redirect_canonical()

    bp_template_redirectbp_actions()
    bp_actionsbp_album_action_upload()

    bp_actionsbp_album_action_edit()

    bp_actionsbp_album_action_delete()

    bp_actionsbp_core_setup_message()

    bp_actionsbp_activity_action_permalink_router()

    bp_actionsbp_activity_action_delete_activity()

    bp_actionsbp_activity_action_spam_activity()

    bp_actionsbp_activity_action_post_update()

    bp_actionsbp_activity_action_post_comment()

    bp_actionsbp_activity_action_mark_favorite()

    bp_actionsbp_activity_action_remove_favorite()

    bp_actionsbp_activity_action_sitewide_feed()

    bp_actionsbp_activity_action_personal_feed()

    bp_actionsbp_activity_action_friends_feed()

    bp_actionsbp_activity_action_my_groups_feed()

    bp_actionsbp_activity_action_mentions_feed()

    bp_actionsbp_activity_action_favorites_feed()

    bp_actionsbp_blogs_redirect_to_random_blog()

    bp_actionsgroups_action_create_group()

    bp_actionsgroups_action_join_group()

    bp_actionsgroups_action_leave_group()

    bp_actionsgroups_action_redirect_to_random_group()

    bp_actionsgroups_action_group_feed()

    bp_actionsmessages_add_autocomplete_js()

    bp_actionsmessages_action_conversation()

    bp_actionsmessages_action_delete_message()

    bp_actionsmessages_action_bulk_delete()

    bp_actionsbp_notifications_action_mark_read()

    bp_actionsbp_notifications_action_mark_unread()

    bp_actionsbp_notifications_action_delete()

    bp_actionsbp_settings_action_general()

    bp_actionsbp_settings_action_notifications()

    bp_actionsbp_settings_action_capabilities()

    bp_actionsbp_settings_action_delete_account()

    bp_actionsxprofile_action_delete_avatar()

    bp_actionsbp_core_get_random_member()

    bp_actionsmcbpd_override_xprofile_screen_edit_profile()

    bp_template_redirectbp_screens()
    bp_screensbp_blogs_screen_index()

    bp_screensbp_forums_directory_forums_setup()

    bp_screensgroups_directory_groups_setup()

    bp_screensbp_blogs_screen_create_a_blog()

    bp_screensbp_activity_screen_index()

    bp_screensbp_activity_screen_single_activity_permalink()

    bp_screensbp_forums_screen_single_forum()

    bp_screensbp_forums_screen_single_topic()

    bp_screensgroups_screen_group_activity_permalink()

    bp_screensgroups_screen_group_admin_edit_details()

    bp_screensgroups_screen_group_admin_settings()

    bp_screensgroups_screen_group_admin_avatar()

    bp_screensgroups_screen_group_admin_manage_members()

    bp_screensgroups_screen_group_admin_requests()

    bp_screensgroups_screen_group_admin_delete_group()

    bp_screensmessages_screen_conversation()

    bp_screensbp_members_screen_index()

    bp_screensbp_core_screen_signup()

    bp_screensbp_core_screen_activation()

    bp_template_redirectbp_post_request()

    bp_template_redirectbp_get_request()

    template_redirectwp_shortlink_header()

    template_redirectwp_redirect_admin_locations()

    get_header_NO_CALLBACK_

    bp_headbp_activity_sitewide_feed()

    bp_headbp_groups_activity_feed()

    bp_headbp_members_activity_feed()

    wp_headwp_enqueue_scripts()
    wp_enqueue_scriptsbp_enqueue_scripts()
    bp_enqueue_scripts_NO_CALLBACK_

    wp_enqueue_scriptsbp_dtheme_enqueue_scripts()

    wp_enqueue_scriptsbp_dtheme_enqueue_styles()

    wp_headnoindex()

    wp_headfeed_links()

    wp_headfeed_links_extra()

    wp_headwp_print_styles()
    wp_print_styleswpcf7_enqueue_styles()
    wpcf7_enqueue_styles_NO_CALLBACK_

    wp_print_stylesjes_ua_enqueue_style()

    wp_print_stylesjes_css_style()

    wp_head_bp_maybe_remove_rel_canonical()

    wp_headwp_print_head_scripts()
    wp_print_scriptswp_just_in_time_script_localization()

    wp_print_scriptswpcf7_enqueue_scripts()
    wpcf7_enqueue_scripts_NO_CALLBACK_

    wp_print_scriptsjes_ea_enqueue_script()

    wp_print_scriptsmcbpd_load_scripts()

    wp_headrsd_link()

    wp_headwlwmanifest_link()

    wp_headadjacent_posts_rel_link_wp_head()

    wp_headlocale_stylesheet()

    wp_headwp_generator()

    wp_headrel_canonical()

    wp_headwp_shortlink_wp_head()

    wp_headbp_core_add_ajax_url_js()

    wp_headbp_core_sort_nav_items()

    wp_headbp_core_sort_subnav_items()

    wp_headbp_core_record_activity()
    update_user_meta_NO_CALLBACK_

    updated_user_meta_NO_CALLBACK_

    wp_headwpcf7_head()

    wp_headembedly_head()

    wp_headjes_seo_title()

    wp_head[jQueryLightbox]->wp_head()

    wp_headmessages_add_autocomplete_css()

    wp_headbp_album_add_css()
    wp_print_styleswpcf7_enqueue_styles()
    wpcf7_enqueue_styles_NO_CALLBACK_

    wp_print_stylesjes_ua_enqueue_style()

    wp_print_stylesjes_css_style()

    wp_headmcbpd_load_stylesheets()

    wp_headbp_dtheme_header_style()

    wp_headbp_dtheme_custom_background_style()

    wp_headbp_core_confirmation_js()

    bp_before_headerbp_dtheme_remove_nojs_body_class()

    bp_search_login_bar_NO_CALLBACK_

    parse_tax_query_NO_CALLBACK_

    parse_tax_query_NO_CALLBACK_

    posts_selection_NO_CALLBACK_

    parse_tax_query_NO_CALLBACK_

    parse_tax_query_NO_CALLBACK_

    posts_selection_NO_CALLBACK_

    bp_headermcbpd_show_user_business_card()
    xprofile_template_loop_start_NO_CALLBACK_

    xprofile_template_loop_end_NO_CALLBACK_

    bp_after_header_NO_CALLBACK_

    bp_before_container_NO_CALLBACK_

    bp_before_member_messages_content_NO_CALLBACK_

    bp_before_member_messages_loop_NO_CALLBACK_

    bp_after_member_messages_loop_NO_CALLBACK_

    bp_after_member_messages_content_NO_CALLBACK_

    deprecated_function_run_NO_CALLBACK_

    activity_loop_startbp_activity_embed()

    bp_before_activity_entry_NO_CALLBACK_

    bp_activity_entry_content_NO_CALLBACK_

    bp_activity_entry_meta_NO_CALLBACK_

    bp_before_activity_entry_comments_NO_CALLBACK_

    bp_activity_entry_comments_NO_CALLBACK_

    bp_after_activity_entry_comments_NO_CALLBACK_

    bp_after_activity_entry_NO_CALLBACK_

    bp_before_activity_entry_NO_CALLBACK_

    bp_activity_entry_content_NO_CALLBACK_

    bp_activity_entry_meta_NO_CALLBACK_

    bp_before_activity_entry_comments_NO_CALLBACK_

    bp_before_activity_commentbp_activity_comment_embed()

    bp_activity_comment_options_NO_CALLBACK_

    bp_after_activity_commentbp_activity_comment_embed_after_recurse()

    bp_activity_entry_comments_NO_CALLBACK_

    bp_after_activity_entry_comments_NO_CALLBACK_

    bp_after_activity_entry_NO_CALLBACK_

    activity_loop_end_NO_CALLBACK_

    dynamic_sidebar_NO_CALLBACK_

    member_loop_start_NO_CALLBACK_

    member_loop_end_NO_CALLBACK_

    get_footer_NO_CALLBACK_

    bp_after_container_NO_CALLBACK_

    bp_before_footer_NO_CALLBACK_

    bp_after_footer_NO_CALLBACK_

    wp_footerbp_core_admin_bar()

    wp_footerbp_show_friends_custom_js()

    wp_footerbp_core_print_generation_time()

    wp_footerwp_print_footer_scripts()
    wp_print_footer_scripts_wp_footer_scripts()

    wp_footerwp_admin_bar_render()

    shutdownwp_ob_end_flush_all()

    為多站點配置 BuddyPress

    為多站點配置 BuddyPress

    Codex Home → Getting Started → Configure BuddyPress for Multisite
    Configure BuddyPress for Multisite

    After activating BuddyPress, you will be automatically redirected to the BuddyPress Welcome Screen if this is the first time you』ve activated BuddyPress or if you』ve just upgraded BuddyPress. After taking some time to check out the new features added to the plugin, go to Network Admin menu > Settings > Components to begin configuring your installation.

    Network Admin > Settings > Components panel
    Network Admin > Settings > Pages panel
    Network Admin > Settings > Options panel

    Network Admin > Settings > Components
    By default, BuddyPress Core and the Members components are enabled (Must-Use). Extended Profiles, Account Settings, Activity Streams, Notifications, and Site Tracking components are activated for you.
    You can however, selectively disable/enable any of the components later if you so choose by using the same form. Your BuddyPress installation will continue to function. However, the features of the disabled components will no longer be accessible to anyone using the site.

    Available Components
    Each component has a unique purpose, and your community may not need each one.

    Extended Profiles
    Customize your community with fully editable profile fields that allow your users to describe themselves.
    Account Settings
    Allow your users to modify their account and notification settings directly from within their profiles.
    Friend Connections
    Let your users make connections so they can track the activity of others and focus on the people they care about the most.
    Private Messaging
    Allow your users to talk to each other directly and in private. Not just limited to one-on-one discussions, messages can be sent between any number of members.
    Activity Streams
    Global, personal, and group activity streams with threaded commenting, direct posting, favoriting and @mentions, all with full RSS feed and email notification support.
    User Groups
    Groups allow your users to organize themselves into specific public, private or hidden sections with separate activity streams and member listings.
    Site Tracking
    Record activity for new posts and comments from a single site in your network or from all sites in your network depending on how you configured BuddyPress for your multisite installation. (「Multisite/Network」 is a feature of WordPress which needs to be manually enabled and configured first. Instructions for enabling this can be found at the WordPress codex WP Codex – Create A Network)

    Required Components
    The following components are required by BuddyPress and cannot be turned off.

    BuddyPress Core: It『s what makes [time travel] BuddyPress possible!
    Community Members: Everything in a BuddyPress community revolves around its members.

    Network Admin > Settings > Pages
    BuddyPress components are rendered as WordPress Pages. Make sure that activated components have corresponding pages assigned to each in this panel.

    Directories
    Associate a WordPress Page with each BuddyPress component directory.

    Activity Streams
    User Groups (if activated)
    Members
    Site Tracking (Blogs for Multisite)

    Registration
    Associate WordPress Pages with the following BuddyPress Registration pages if you want to enable registration.

    Register
    Activate

    Network Admin > Settings > Options

    Main Settings

    Toolbar: Show the Toolbar for logged out users (default: enabled)
    Account Deletion: Allow registered members to delete their own accounts (default: enabled)

    Profile Settings

    Profile Photo Uploads: Allow registered members to upload avatars (default: enabled)
    Cover Image Uploads: Allow registered members to upload cover images (default: enabled)
    Profile Syncing: Enable BuddyPress to WordPress profile syncing (default: enabled)

    Groups Settings

    Group Creation: Enable group creation for all users (default: enabled)
    Administrators can always create groups, regardless of this setting.
    Group Photo Uploads: Allow customizable avatars for groups (default: enabled)
    Group Cover Image Uploads: Allow customizable cover images for groups (default: enabled)

    Activity Settings

    Blog & Forum Comments: Allow activity stream commenting on blog and forum posts (default: disabled)
    Activity Auto Refresh: Automatically check for new items by viewing the activity stream (default: enabled)