context = $context; $this->assets = $assets ?: new Assets( $this->context ); $this->modules = $modules ?: new Modules( $this->context ); $this->authentication = new Authentication( $this->context ); } /** * Registers functionality through WordPress hooks. * * @since 1.0.0 */ public function register() { add_action( 'wp_dashboard_setup', function () { $this->add_widgets(); } ); } /** * Add a Site Kit by Google widget to the WordPress admin dashboard. * * @since 1.0.0 */ private function add_widgets() { if ( ! current_user_can( Permissions::VIEW_WP_DASHBOARD_WIDGET ) ) { return; } // Enqueue styles. $this->assets->enqueue_asset( 'googlesitekit-wp-dashboard-css' ); // Enqueue scripts. $this->assets->enqueue_asset( 'googlesitekit-wp-dashboard' ); $this->modules->enqueue_assets(); wp_add_dashboard_widget( 'google_dashboard_widget', __( 'Site Kit Summary', 'google-site-kit' ), function () { $this->render_googlesitekit_wp_dashboard(); } ); } /** * Render the Site Kit WordPress Dashboard widget. * * @since 1.0.0 * @since 1.120.0 Added the `data-view-only` attribute. */ private function render_googlesitekit_wp_dashboard() { $active_modules = $this->modules->get_active_modules(); $analytics_connected = isset( $active_modules['analytics-4'] ) && $active_modules['analytics-4']->is_connected(); $search_console_connected = isset( $active_modules['search-console'] ) && $active_modules['search-console']->is_connected(); $is_view_only = ! $this->authentication->is_authenticated(); $can_view_shared_analytics = current_user_can( Permissions::READ_SHARED_MODULE_DATA, 'analytics-4' ); $can_view_shared_search_console = current_user_can( Permissions::READ_SHARED_MODULE_DATA, 'search-console' ); $display_analytics_data = ( ! $is_view_only && $analytics_connected ) || ( $is_view_only && $can_view_shared_analytics ); $display_search_console_data = ( ! $is_view_only && $search_console_connected ) || ( $is_view_only && $can_view_shared_search_console ); $class_names = array(); if ( $analytics_connected && $display_analytics_data ) { $class_names[] = 'googlesitekit-wp-dashboard-analytics_active_and_connected'; } if ( $search_console_connected && $display_search_console_data ) { $class_names[] = 'googlesitekit-wp-dashboard-search_console_active_and_connected'; } if ( ! $analytics_connected && ! $is_view_only ) { $class_names[] = 'googlesitekit-wp-dashboard-analytics-activate-cta'; } $class_names = implode( ' ', $class_names ); $this->render_noscript_html(); ?>
render_loading_container( 'googlesitekit-wp-dashboard__cta' ); ?>
render_loading_container( 'googlesitekit-wp-dashboard-loading__can_view_analytics' ); } if ( $display_search_console_data ) { $this->render_loading_container( 'googlesitekit-wp-dashboard-loading__search_console_active_and_connected' ); } if ( ! $analytics_connected && ! $is_view_only ) { $this->render_loading_container( 'googlesitekit-wp-dashboard-stats__cta' ); } if ( $display_analytics_data ) { $this->render_loading_container( 'googlesitekit-unique-visitors-chart-widget' ); $this->render_loading_container( 'googlesitekit-search-console-widget' ); } ?>