bp_core_add_page_mappings( array $components, string $existing = 'keep' )
Creates necessary directory pages.
Description
Directory pages are those WordPress pages used by BP components to display content (eg, the ‘groups’ page created by BP).
Parameters
- $components
-
(Required) Components to create pages for.
- $existing
-
(Optional) 'delete' if you want to delete existing page mappings and replace with new ones. Otherwise existing page mappings are kept, and the gaps filled in with new pages. Default: 'keep'.
Default value: 'keep'
Source
File: bp-core/bp-core-functions.php
function bp_core_add_page_mappings( $components, $existing = 'keep' ) { // If no value is passed, there's nothing to do. if ( empty( $components ) ) { return; } // Make sure that the pages are created on the root blog no matter which // dashboard the setup is being run on. if ( ! bp_is_root_blog() ) { switch_to_blog( bp_get_root_blog_id() ); } $pages = bp_core_get_directory_page_ids( 'all' ); // Delete any existing pages. if ( 'delete' === $existing ) { foreach ( $pages as $page_id ) { wp_delete_post( $page_id, true ); } $pages = array(); } $page_titles = bp_core_get_directory_page_default_titles(); $pages_to_create = array(); foreach ( array_keys( $components ) as $component_name ) { if ( ! isset( $pages[ $component_name ] ) && isset( $page_titles[ $component_name ] ) ) { $pages_to_create[ $component_name ] = $page_titles[ $component_name ]; } } // Register and Activate are not components, but need pages when // registration is enabled. if ( bp_get_signup_allowed() ) { foreach ( array( 'register', 'activate' ) as $slug ) { if ( ! isset( $pages[ $slug ] ) ) { $pages_to_create[ $slug ] = $page_titles[ $slug ]; } } } // No need for a Sites directory unless we're on multisite. if ( ! is_multisite() && isset( $pages_to_create['blogs'] ) ) { unset( $pages_to_create['blogs'] ); } // Members must always have a page, no matter what. if ( ! isset( $pages['members'] ) && ! isset( $pages_to_create['members'] ) ) { $pages_to_create['members'] = $page_titles['members']; } // Create the pages. foreach ( $pages_to_create as $component_name => $page_name ) { $exists = get_page_by_path( $component_name ); // If page already exists, use it. if ( ! empty( $exists ) ) { $pages[ $component_name ] = $exists->ID; } else { $pages[ $component_name ] = wp_insert_post( array( 'comment_status' => 'closed', 'ping_status' => 'closed', 'post_status' => 'publish', 'post_title' => $page_name, 'post_type' => 'page', ) ); } } // Save the page mapping. bp_update_option( 'bp-pages', $pages ); // If we had to switch_to_blog, go back to the original site. if ( ! bp_is_root_blog() ) { restore_current_blog(); } }
Changelog
Version | Description |
---|---|
BuddyPress 1.7.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.