setup(); } ); } /** * Get all messaging services. * * Add new service like this - * add_filter( * 'all_path_services', * function ( array $services = [] ): array { * $services[] = [ * 'name' => __( 'SMS: All Path Messaging', 'all-path-messaging' ), * 'menu_slug' => str_replace( '_', '-', SLUG ), * 'menu_capability' => apply_filters( 'all_path_sms_user_capability', 'manage_options' ), * 'menu_renderer' => [ Admin::get_instance(), 'options_page' ], * ]; * * return $services; * } * ); * * @return array{ * name: string, * menu_slug: string, * menu_capability: string, * menu_renderer: mixed, * }[] */ function get_services(): array { // Get all services. $services = (array) apply_filters( 'all_path_services', [] ); // Filtered services. $filtered_services = []; // Loop over the services. foreach ( $services as $data ) { // Return early if invalid service. if ( ! is_array( $data ) || empty( $data['name'] ) || empty( $data['menu_slug'] ) || empty( $data['menu_capability'] ) || empty( $data['menu_renderer'] ) ) { continue; } // Add the service. $filtered_services[] = [ 'name' => $data['name'], 'menu_slug' => $data['menu_slug'], 'menu_capability' => $data['menu_capability'], 'menu_renderer' => $data['menu_renderer'], ]; } // Return the services. return $filtered_services; }