Skip to:
Content

BuddyPress.org

Changeset 13123


Ignore:
Timestamp:
10/09/2021 06:10:51 PM (5 years ago)
Author:
imath
Message:

Admin: improve information about WP pages being used as BP directories

We are now using BuddyPress specific post states to inform a WordPress page is used as the BP Component's directory page. This information is displayed into the WP Admin Pages edit screen, for menu items linking to a BP Directory into the WP Admin Menu screen as well as into the Customizer Menu section.

Fixes #8470

Location:
trunk/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-activity/classes/class-bp-activity-component.php

    r13093 r13123  
    547547                parent::blocks_init( $blocks );
    548548        }
     549
     550        /**
     551         * Add the Activity directory state.
     552         *
     553         * @since 10.0.0
     554         *
     555         * @param array   $states Optional. See BP_Component::admin_directory_states() for description.
     556         * @param WP_Post $post   Optional. See BP_Component::admin_directory_states() for description.
     557         * @return array          See BP_Component::admin_directory_states() for description.
     558         */
     559        public function admin_directory_states( $states = array(), $post = null ) {
     560                $bp = buddypress();
     561
     562                if ( isset( $bp->pages->activity->id ) && (int) $bp->pages->activity->id === (int) $post->ID ) {
     563                        $states['page_for_activity_directory'] = _x( 'BP Activity Page', 'page label', 'buddypress' );
     564                }
     565
     566                return parent::admin_directory_states( $states, $post );
     567        }
    549568}
  • trunk/src/bp-blogs/classes/class-bp-blogs-component.php

    r13093 r13123  
    433433                parent::blocks_init( $blocks );
    434434        }
     435
     436        /**
     437         * Add the Sites directory states.
     438         *
     439         * @since 10.0.0
     440         *
     441         * @param array   $states Optional. See BP_Component::admin_directory_states() for description.
     442         * @param WP_Post $post   Optional. See BP_Component::admin_directory_states() for description.
     443         * @return array          See BP_Component::admin_directory_states() for description.
     444         */
     445        public function admin_directory_states( $states = array(), $post = null ) {
     446                $bp = buddypress();
     447
     448                if ( isset( $bp->pages->blogs->id ) && (int) $bp->pages->blogs->id === (int) $post->ID ) {
     449                        $states['page_for_sites_directory'] = _x( 'BP Sites Page', 'page label', 'buddypress' );
     450                }
     451
     452                return parent::admin_directory_states( $states, $post );
     453        }
    435454}
  • trunk/src/bp-core/admin/bp-core-admin-actions.php

    r12606 r13123  
    6060add_action( 'bp_admin_menu', 'bp_admin_separator' );
    6161
     62// Add a filter to include BP Components directory pages display states.
     63add_filter( 'display_post_states', 'bp_admin_display_directory_states', 10, 2 );
     64
    6265/**
    6366 * When a new site is created in a multisite installation, run the activation
     
    235238        do_action( 'bp_register_admin_settings' );
    236239}
     240
     241/**
     242 * Dedicated filter to inform about BP components directory page states.
     243 *
     244 * @since 10.0.0
     245 *
     246 * @param string[] $post_states An array of post display states.
     247 * @param WP_Post  $post        The current post object.
     248 */
     249function bp_admin_display_directory_states( $post_states = array(), $post = null ) {
     250        /**
     251         * Filter here to add BP Directory pages.
     252         *
     253         * Used internaly by BP_Component->admin_directory_states(). Please use the dynamic
     254         * filter in BP_Component->admin_directory_states() to edit the directory state
     255         * according to the component's ID.
     256         *
     257         * @since 10.0.0
     258         *
     259         * @param array    $value An empty array.
     260         * @param WP_Post  $post  The current post object.
     261         */
     262        $directory_page_states = apply_filters( 'bp_admin_display_directory_states', array(), $post );
     263
     264        if ( $directory_page_states ) {
     265                $post_states = array_merge( $post_states, $directory_page_states );
     266        }
     267
     268        return $post_states;
     269}
  • trunk/src/bp-core/classes/class-bp-component.php

    r13108 r13123  
    510510                }
    511511
     512                // Set directory page states.
     513                add_filter( 'bp_admin_display_directory_states', array( $this, 'admin_directory_states' ), 10, 2 );
     514
    512515                /**
    513516                 * Fires at the end of the setup_actions method inside BP_Component.
     
    988991                do_action( 'bp_' . $this->id . '_blocks_init' );
    989992        }
     993
     994        /**
     995         * Add component's directory states.
     996         *
     997         * @since 10.0.0
     998         *
     999         * @param string[] $states An array of post display states.
     1000         * @param WP_Post  $post   The current post object.
     1001         * @return array           The component's directory states.
     1002         */
     1003        public function admin_directory_states( $states = array(), $post = null ) {
     1004                if ( $this->has_directory ) {
     1005                        /**
     1006                         * Filter here to edit the component's directory states.
     1007                         *
     1008                         * This is a dynamic hook that is based on the component string ID.
     1009                         *
     1010                         * @since 10.0.0
     1011                         *
     1012                         * @param string[] $states An array of post display states.
     1013                         */
     1014                        return apply_filters( 'bp_' . $this->id . '_admin_directory_states', $states );
     1015                }
     1016
     1017                return $states;
     1018        }
    9901019}
    9911020endif; // BP_Component.
  • trunk/src/bp-groups/classes/class-bp-groups-component.php

    r13103 r13123  
    11351135                );
    11361136        }
     1137
     1138        /**
     1139         * Add the Groups directory states.
     1140         *
     1141         * @since 10.0.0
     1142         *
     1143         * @param array   $states Optional. See BP_Component::admin_directory_states() for description.
     1144         * @param WP_Post $post   Optional. See BP_Component::admin_directory_states() for description.
     1145         * @return array          See BP_Component::admin_directory_states() for description.
     1146         */
     1147        public function admin_directory_states( $states = array(), $post = null ) {
     1148                $bp = buddypress();
     1149
     1150                if ( isset( $bp->pages->groups->id ) && (int) $bp->pages->groups->id === (int) $post->ID ) {
     1151                        $states['page_for_groups_directory'] = _x( 'BP Groups Page', 'page label', 'buddypress' );
     1152                }
     1153
     1154                return parent::admin_directory_states( $states, $post );
     1155        }
    11371156}
  • trunk/src/bp-members/classes/class-bp-members-component.php

    r13093 r13123  
    938938                );
    939939        }
     940
     941        /**
     942         * Add the Members directory states.
     943         *
     944         * @since 10.0.0
     945         *
     946         * @param array   $states Optional. See BP_Component::admin_directory_states() for description.
     947         * @param WP_Post $post   Optional. See BP_Component::admin_directory_states() for description.
     948         * @return array          See BP_Component::admin_directory_states() for description.
     949         */
     950        public function admin_directory_states( $states = array(), $post = null ) {
     951                $bp = buddypress();
     952
     953                if ( isset( $bp->pages->members->id ) && (int) $bp->pages->members->id === (int) $post->ID ) {
     954                        $states['page_for_members_directory'] = _x( 'BP Members Page', 'page label', 'buddypress' );
     955                }
     956
     957                if ( bp_get_signup_allowed() || bp_get_members_invitations_allowed() ) {
     958                        if ( isset( $bp->pages->register->id ) && (int) $bp->pages->register->id === (int) $post->ID ) {
     959                                $states['page_for_bp_registration'] = _x( 'BP Registration Page', 'page label', 'buddypress' );
     960                        }
     961
     962                        if ( isset( $bp->pages->activate->id ) && (int) $bp->pages->activate->id === (int) $post->ID ) {
     963                                $states['page_for_bp_activation'] = _x( 'BP Activation Page', 'page label', 'buddypress' );
     964                        }
     965                }
     966
     967                return parent::admin_directory_states( $states, $post );
     968        }
    940969}
Note: See TracChangeset for help on using the changeset viewer.