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.

    Twenty Thirteen Theme 二〇一三主题

    Twenty Thirteen Theme 二〇一三主题

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

    A. One column Layout
    One Column Layout. Click on image to enlarge.
    This is the default layout of the Twenty Thirteen theme if and only if you do not add any widget in the Secondary Widget area in Appearance > Widgets. Otherwise, the Twenty Thirteen theme will automatically have a two-column layout if you add widget to the Secondary Widget area.
    If you want to add widgets in the Secondary Widget area for your site』s pages/posts but would prefer a one-column layout for all BP pages, following are the steps to do so.
    1. Create a child theme of the Twenty Thirteen theme.
    2. Create a new file in your new child theme folder and name it buddypress.php.
    3. Copy over the content of Twenty Thirteen』s page.php file into the new buddypress.php file. Remove the get_sidebar tag just before the get_footer call in the template.
    ?12345678910111213141516171819     

            

                                                    

        

     
    4. Create a blank functions.php file in the folder of your child theme if you don』t have one yet. You will need to remove the .sidebar body class generated if any widget is added to the Secondary Widget Area which would move the alignment of the content area away from the center,
    5. Add the following to the new functions.php file then save file.
    ?1234567891011 $value) {             if ($value == 'sidebar') unset($wp_classes[$key]);        }    endif;    return $wp_classes;}add_filter('body_class', 'mme_remove_sidebar_body_class', 20, 2);
    6. Upload your Twenty Thirteen child theme folder to server.
    B. Full Width Layout
    Full-width Layout. Click on image to enlarge.
    You can create a full-width layout for all BP pages even when the Secondary Widget Area (right sidebar) is active for rest of the site by following these steps.
    1. Create a child theme of the Twenty Thirteen theme.
    2. Create a new file in your new child theme folder and name it buddypress.php.
    3. Copy over the content of Twenty Thirteen』s page.php file into the new buddypress.php file. Remove the get_sidebar tag just before the get_footer call in the template as well as the section with the call to post_thumbnail and save file.
    ?12345678910111213141516171819     

            

                                                    

        

     
    4. Create a blank functions.php file in the folder of your child theme if you don』t have one yet. You will need to remove the sidebar body class generated if any widget is added to the Secondary Widget Area which would show up in regular blog posts/pages,
    5. Add the following to your new functions.php file then save file.
    ?1234567891011 $value) {             if ($value == 'sidebar') unset($wp_classes[$key]);        }    endif;    return $wp_classes;}add_filter('body_class', 'mme_remove_sidebar_body_class', 20, 2);
    6. Open up your child theme』s style.css file, add the following and save file.
    ?1234567891011121314151617.buddypress .entry-header,.buddypress .entry-content,.buddypress .entry-summary,.buddypress .entry-meta {    max-width: 1040px;    width: 100%;} @ media (max-width: 1069px) {    .buddypress .entry-header,    .buddypress .entry-content,    .buddypress .entry-summary,    .buddypress .entry-meta {        padding-left: 20px;        padding-right: 20px;    }}
    – delete the space between @ and media in media query above.
    7. Upload your Twenty Thirteen child theme folder to server.
    C. Two Column, Right Sidebar Layout
    Two-column Layout. Click on image to enlarge.
    When you add any widget to the Secondary Widget Area in Appearance > Widgets using the Twenty Thirteen theme, the right sidebar will automatically show up in all posts and pages including the BuddyPress pages. So if you plan to have the same widgets in the right sidebar throughout the site, then you can stop reading at this point as you will not have to do anything further.
    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 then 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 Thirteen theme.
    2. Create a new file in your new child theme folder and name it buddypress.php.
    3. Copy over the content of Twenty Thirteen』s page.php file into a new buddypress.php file and remove the section about retrieving the post_thumbnail. Then you will have to change get_sidebar() to get_sidebar(『buddypress』).
    ?12345678910111213141516171819202122232425262728293031323334353637     

            

                                  <article id="post-" >                    

                            

                        

                         

                                                     '

    ', 'link_before' => '', 'link_after' => '' ) ); ?>                    

                         

                            <?php edit_post_link( __( 'Edit', 'twentythirteen' ), '', '' ); ?>                    

                    

                          

        

     
    4. Create a blank functions.php file in the folder of your child theme if you don』t have one yet. You will be creating a new widget area for BuddyPress pages as well as adding a body class to help you style your two column layout.
    5. Add the following to the new functions.php file then save file.
    ?1234567891011121314151617181920212223 __( 'BuddyPress Sidebar Widget Area', 'mmechildtheme' ),        'id'         => 'bp-sidebar',        'description'    => __( 'Appears in the sidebar section of all BuddyPress pages.', 'mmechildtheme' ),        'before_widget' => '

    ',        'before_title'  => '

    ',        'after_title'   => '

    ',    ) );}add_action( 'widgets_init', 'mme_register_bp_widgets_area' ); // Add the sidebar body class for BP pages if the Secondary Widget area is not activefunction mme_add_sidebar_body_class( $classes ) {    if ( function_exists ( 'bp_loaded' ) &&  !bp_is_blog_page() && !is_active_sidebar( 'sidebar-2' )  )  {        $classes[] = 'sidebar';    }    return $classes;}add_filter( 'body_class', 'mme_add_sidebar_body_class' );
    6. Create a new file named sidebar-buddypress.php in your child theme folder and add the following:
    ?123456789101112131415161718192021     

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

    视频 (Videos)

    视频 (Videos)

    Codex Home → Getting Started → Videos
    Videos

    Herding Cats with the BuddyPress Activity Component
    BuddyPress is great for building niche community sites. But, in the hands of the right developer, BP can power much more than just social networks. The Activity component is a prime example of this flexibility.

    BuddyPress Rules – The Road To Rewrites Is Paved With Pretty Permalinks
    This session discusses how WordPress Rewrite Rules API integration for BuddyPress 1.8 was planned, architected, built, and patched.

    Beyond the Default: Explorations and Experiments in BuddyPress
    For years BuddyPress was tied to a specific theme and creating a custom theme had a steep learning curve. BuddyPress now has theme independence. This presentation looks beyond the default, to new UI』s, new possibilities.

    BuddyPress 101
    This is an introduction into the use of BuddyPress on an existing WordPress-powered web site. NOTE: this video may be of an earlier version of BuddyPress.

    Advanced BuddyPress Plugin Development

    Beyond the Blog with BuddyPress and bbPress
    This presentation showcases some favorite BuddyPress and bbPress installations. It explains what makes them great, why they』ve succeeded, and provides tips and tricks you can implement to take your BuddyPress and bbPress powered site far beyond the blog.

    移动设备 (Mobile)

    移动设备 (Mobile)

    Codex Home → Mobile
    Mobile

    BuddyPress should work on most mobile smartphone browsers in the same manner it works on desktop browsers. However, you can optimize the mobile experience in a few different ways.
    Responsive Themes
    Responsive web design or responsive themes are themes that shift its layout depending on the available screen size of the device someone has used to access a site. This makes the viewing experience greatly improved with minimal panning, zooming and scrolling.
    BuddyPress works on most themes out of the box even with responsive themes. That being said, the template files for BuddyPress are not 100% responsive. Since every theme has it』s own varying CSS there would be no way to force a set responsiveness to the BuddyPress template files for every available theme. You can always add your own template files and CSS to BuddyPress to enhance the responsiveness.
    There are many free and paid responsive WordPress themes available to install.
    Web Apps
    Web apps are applications that use a web browser as the client and are not installed locally. This has the advantage of supporting more devices especially when most smartphone mobile browsers support current advancements in web technology.
    One of the characteristics of web apps is that there are no full page refreshes making it seem like everything happens in one window with a snappier response. Data is generally accessed from a REST API and then a javascript based web app updates the browser with returned data. BuddyPress currently has no official mobile web apps.
    Mobile Plugins
    There are a handful of WordPress plugins to switch out your theme to a fully responsive/web app type theme. These can be the best and easiest solution to format your site on the myriad of available devices. BuddyPress currently has no official mobile theme plugins.
    Mobile Plugins:

    WPTouch: 3rd Party Developer  https://wordpress.org/plugins/wptouch
    BuddyMobile: 3rd Party Developer https://wordpress.org/plugins/buddymobile
    Jetpack Mobile Theme: Automattic https://wordpress.org/plugins/jetpack
    AppPresser: 3rd Party Developer https://wordpress.org/plugins/apppresser

    Native Apps
    Native apps are installed locally per device. Normally you would visit an App Store from one of the mobile OS venders to install apps. If you were to create a mobile app you would need to create a different native app for each smartphone vendor just like the mobile apps for WordPress. This can be seen as disadvantages for developers. BuddyPress currently has no official native apps.
    Native Mobile Apps:

    BuddyDroid: 3rd Party Developer https://play.google.com/store/apps/details?id=org.yuttadhammo.buddydroid

    BuddyPress API
    BuddyPress currently has no official API for external communication. There are a few 3rd Party API plugins. These may not be up to date or working. Use at your own discretion.
    API Plugins:

    JSON API for BuddyPress: 3rd Party Developer https://wordpress.org/plugins/json-api-for-buddypress
    BuddyData: 3rd Party Developer https://github.com/modemlooper/BuddyData
    BuddyPress API: 3rd Party Developer https://github.com/boonebgorges/buddypress-api

    网站礼仪规则

    网站礼仪规则

    Codex Home → Site Etiquette
    Site Etiquette

    What follows are the 「rules of etiquette」 for BuddyPress.org, and can be summed up as 「being cool」 which is a good way to be anyhow, particularly if you appreciate the Fonz.
    1. Be cool. This means respect the other users of this site and mind what you say. If you wouldn』t walk into your grandmothers house and say to her bridge club what you feel you want to say here, probably filter it down and sensor yourself just a smidge. Not that we can』t take the heat (or gramma can』t either), but it just isn』t productive.
    2. Stay on topic. Naturally conversations die off and people run out of things to say. When that happens, hop onto your activity stream and start shouting to the world there instead. The forums are explicitly for supporting and helping develop BuddyPress, and anything else gets in the way of that.
    3. Moderators on duty. If things get out of hand, we have a volunteer staff of gentle giants that can still be angered. They』re like hybrid Terminator/Frankenstein/Zombies that, while kind and mild mannered, are chomping at the bit to mark you as a spammer.
    4. Do not feed the animals. If someone is bullying you or someone else around or just starting fires randomly, ignore them and ping one of the moderators. These forums are meant to be fun for people of all ages and skill levels; so be kind, rewind.
    5. No put downs. Or else you won』t get milk at lunch. If you do get milk, and if the arrow on your carton is pointing at someone, that means you love them. And yes, if it』s pointing at yourself, that means you love yourself.
    We want everyone to feel welcome, comfortable, and appreciated. In order to do that it seems we』ve gotten to the point where it will pay to have some loose rules to refer people to if things go awry. If you do your best to follow this guide, there will be cake.

    在符号链接 (symlinks) 环境中安装 BuddyPress

    在符号链接 (symlinks) 环境中安装 BuddyPress

    Codex Home → Getting Started → Frequently Asked Questions → Installing BuddyPress in a symlinked environment
    Installing BuddyPress in a symlinked environment

    If you use symbolic links (symlinks) for your WordPress plugin environment, you may need to do some additional configuration to ensure that BuddyPress assets are loaded correctly.
    If you find that CSS and Javascript assets are not being loaded correctly (the tags are in the page source, but the paths are incorrect), try putting the following configuration settings into your wp-config.php file:

    define( 'BP_PLUGIN_DIR', '/path/to/buddypress/' );
    define( 'BP_PLUGIN_URL', 'http://example.com/wp-content/plugins/buddypress/' );

    Replace /path/to/buddypress/ with your system path to the buddypress plugin directory (eg /var/www/html/wp-content/plugins/buddypress/). Replace http://example.com/wp-content/plugins/buddypress/ with the actual URL to your BuddyPress plugin directory.

    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

    启动期间的 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()

    启动前检查清单

    启动前检查清单

    Codex Home → Prelaunch Checklist
    Prelaunch Checklist

    Releasing BuddyPress to the world is a big deal, and takes quite a few manual steps to ensure safe & comfortable updates & upgrades are had by all. Below are the steps release leads go through with each & every release.

    Note: These steps vary slightly depending on major/minor/urgency of the deployment to WordPress.org. For questions, or if something is not clear, please ping @johnjamesjacoby, @boone, or @djpaul, who are mad enough to comprehend how & why all this works the way it does. (We keep planning to automate this, but until then, please enjoy this extremely long and intimidating list of responsibilities.)

    Prologue

    There are two code repositories, and you』ll be tasked with compiling the BuddyPress codebase from the development repo to the deployment repo. They are separate because BuddyPress is deployed to almost all end-users from the public WordPress.org plugin repository in a way that requires some development assets to be pre-compiled (it』s not a literal 1-to-1 copy) and because BuddyPress is lucky enough to have its own Trac instance on WordPress.org.

    Key

    We』ll refer to these two repositories like this for the duration of these steps:

    [dev] = buddypress.svn.wordpress.org[wporg] = plugins.svn.wordpress.org/buddypress/

    Now that you』re familiar, sit back, relax, put on your headgear, and get ready for a trip to the atmosphere…

    Pre-Release Codex, Trac, & Publicity

    For minor/major full releases only.

    Create release version page on codex (https://codex.buddypress.org/releases/version-1-5-5/)Create version page to codex Releases page (https://codex.buddypress.org/releases/).Review recent rockstars and release credits (props). Change as needed.Updates to bp-about page.Draft blog post.If this is a major release, check to see whether there are tickets closed against a minor release that will not happen due to the major release. (For example, 3.3.0 was subsumed into 4.0.0.) If so, reassign those tickets to the major release milestone, and delete the unused milestone.

    Version Bumps (in dev)

    For major releases (2.7.0), switch to: /trunk/.
    svn switch https://buddypress.svn.wordpress.org/trunk/
    For minor releases (2.7.1), switch to relative branch: branches/2.7/
    svn switch https://buddypress.svn.wordpress.org/branches/2.7/
    For Beta and Release Candidate releases (2.7.1-beta1), switch to: /trunk/.
    svn switch https://buddypress.svn.wordpress.org/trunk/

    Change version in bp-loader.php (plugin header)Change version in src/bp-loader.php (plugin header)Change $this->version (setup_globals()) in class-buddypress.phpChange stable-tag readme.txt (major and minor releases)Change tested-up-to readme.txt (major and minor releases)Change version in package.jsonUse the latest version of npm and: npm install and then npm shrinkwrapAdd 「Upgrade Notice」 & 「Changelog」 entries for this version in readme.txt (major and minor releases)Commit changes

    Tagging/Branching (in dev)

    N.B. Once created, a tag cannot be removed or edited nor trunk merged to it so please ensure all necessary updates to trunk are committed before creating the tag copy from it.

    For major releases (2.7.0), branch from trunk, then tag from new branch.
    svn cp https://buddypress.svn.wordpress.org/trunk/ https://buddypress.svn.wordpress.org/branches/2.7
    svn cp https://buddypress.svn.wordpress.org/branches/2.7 https://buddypress.svn.wordpress.org/tags/2.7.0
    For minor releases (2.7.1), tag from relevant branch.
    svn cp https://buddypress.svn.wordpress.org/branches/2.7 https://buddypress.svn.wordpress.org/tags/2.7.0
    For Beta and Release Candidate releases (2.7.0-beta1), create tag from trunk.
    svn cp https://buddypress.svn.wordpress.org/trunk https://buddypress.svn.wordpress.org/tags/2.7.0-beta1

    Deploying to [wporg]

    You』ll probably want to checkout the entire BuddyPress repository from WordPress.org. This way you can navigate the entire trunk/branches/tags structure, and more easily make changes as necessary.

    svn co https://plugins.svn.wordpress.org/buddypress/

    Omit externals – that will save you lots of time. Checkout into a temporary directory…

    Export the development version of BuddyPress you intend to deploy to users: svn co https://buddypress.svn.wordpress.org/tags/2.7.1/ . --force --ignore-externals.Use the latest version of npm and run: npm install and then composer install && grunt build. (You may need to globally update npm, or other such fun stuff. Your mileage may vary.)Overwrite the contents of the trunk directory with the contents of build in the [wporg] checkout.If it』s a beta or a release candidate, make sure the Stable tag in both trunk and the newly created tag are the same and are the one of current stable version of BuddyPress. Run svn stat to check if you need to svn add or svn delete filesCreate an svn tag from trunk using svn cp trunk tags/2.7.1 . If it』s not a beta or a release candidate, make sure the Stable tag in both trunk and the newly created tag are the same and are the one of the new version of BuddyPress. This is needed to make sure GlotPress will successfully update Translation strings.Commit & cross fingers!Verify the zip file for the tag, which will be at a URL of the format https://downloads.wordpress.org/plugins/buddypress.4.0.0.zipAsk Paul Gibbs to update https://github.com/buddypress/BuddyPress-build (via git-svn he has locally).Ask Boone Gorges to go to https://packagist.org/packages/buddypress/buddypress and click 「Update」.

    Trac cleanup

    If any tickets remain in milestone, close them or reassign them to a future milestone.Close milestone.Ensure that milestone exists for next major and minor releases.Create a Version for the completed release.

    Announcements

    Publish blog post on buddypress.orgUpdate version number in the Downloads page on the buddypress.org.Write a blog post on bpdevel.wordpress.comForum announcement in buddypress.org/supportSend tweets from the BP twitter accounts.

    Version Bumps (in dev)

    If a major x.y release, bump trunk version numbers to alpha in bp-loader.php (2.1-alpha).Bump relevant branch version numbers to alpha in bp-loader.php (2.1-alpha).If a major x.y release, sync [dev] trunk and [wporg] trunk.

    GlotPress Translation Strings

    Development strings are here: https://translate.wordpress.org/projects/wp-plugins/buddypress/devThe source of the buddypress.pot is: https://plugins.svn.wordpress.org/buddypress/trunk/buddypress.potRegular updates by running: grunt release and pushing to https://plugins.svn.wordpress.org/browser/buddypress/trunk/ will make #Polyglots translators happyThis also allows for relatively easy 「string freezes」 as new releases near

    通知 (Notifications)

    通知 (Notifications)

    Codex Home → Administrator Guide → Notifications
    Notifications

    The notifications component was added to BuddyPress 1.9 and works identically to the previous core notifications functionality, but now separates everything into it』s own component. This page will give you a quick overview of it』s functionality.
    An example of the new Notifications component
    Functionality Overview
    Notifications are a central aspect of the user experience on a BuddyPress site. By default new notifications are displayed in the admin bar profile menu, right next to the navigation menus, some themes even integrate the notification counter in other places (like in the header or sidebar of a page).
    Notifications are sent out to your community members as soon as one of the following things happen:
    Activity

    A member mentions you in an update @username」
    A member replies to an update or comment you』ve posted

    The Notifications menu on BuddyPress.org
    Messages

    A member sends you a new message

    Friends

    A member sends you a friendship request
    A member accepts your friendship request

    Groups

    A member invites you to join a group
    Group information is updated
    You are promoted to a group administrator or moderator
    A member requests to join a private group for which you are an admin

    Group Forums

    Receive notifications of your own posts?

    Every user can view their read and unread notifications on their 「Notifications」 page on their profile and easily:

    Mark notifications as 「read」
    Mark notification as 「unread」
    Delete notification (in batches if needed)

    Email Notifications
    User can enable and disable receiving emails when new notifications are received. This can be done through their Settings > Email page.

    Plugin Integrations
    Some plugins can add their own notifications events that can be triggered by activity of your member. A good example is BBPress which sends notifications on new topics and topic replies.
    Related Resources

    BuddyPress Notifications Extension example from BBPresss 2
    bp_notifications_add_notification()