analytics = new GoogleAnalytics(); $this->links = new Meta\Links(); $this->robots = new Meta\Robots(); $this->keywords = new Meta\Keywords(); $this->verification = new Meta\SiteVerification(); $this->views = [ 'meta' => AIOSEO_DIR . '/app/Common/Views/main/meta.php', 'social' => AIOSEO_DIR . '/app/Common/Views/main/social.php', 'schema' => AIOSEO_DIR . '/app/Common/Views/main/schema.php' ]; } /** * Adds analytics to the views if needed. * * @since 4.0.5 * * @return void */ public function addAnalytics() { if ( $this->analytics->canShowScript() ) { $this->views['analytics'] = AIOSEO_DIR . '/app/Common/Views/main/analytics.php'; } } /** * Registers our title hooks. * * @since 4.0.5 * * @return void */ public function registerTitleHooks() { if ( apply_filters( 'aioseo_disable', false ) || apply_filters( 'aioseo_disable_title_rewrites', false ) ) { return; } add_filter( 'pre_get_document_title', [ $this, 'getTitle' ], 99999 ); add_filter( 'wp_title', [ $this, 'getTitle' ], 99999 ); if ( ! current_theme_supports( 'title-tag' ) ) { add_action( 'template_redirect', [ $this, 'startOutputBuffering' ] ); add_action( 'wp_footer', [ $this, 'rewriteTitle' ], -2 ); } } /** * Initializes the class. * * @since 4.0.5 * * @return void */ public function init() { $included = new Meta\Included(); if ( is_admin() || wp_doing_ajax() || wp_doing_cron() || ! $included->isIncluded() ) { return; } $this->output(); } /** * Returns the page title. * * @since 4.0.5 * * @param string $wpTitle The original page title from WordPress. * @return string $pageTitle The page title. */ public function getTitle( $wpTitle = '' ) { if ( null !== self::$pageTitle ) { return self::$pageTitle; } self::$pageTitle = aioseo()->meta->title->filterPageTitle( $wpTitle ); return self::$pageTitle; } /** * Starts our output buffering. * * @since 4.0.5 * * @return void */ public function startOutputBuffering() { ob_start(); } /** * Rewrites the page title using output buffering. * * @since 4.0.5 * * @return void */ public function rewriteTitle() { $content = apply_filters( 'aioseo_flush_output_buffer', true ) ? ob_get_clean() : ob_get_contents(); $split = explode( '', $content ); $head = $split[0] . ''; unset( $split[0] ); $body = implode( '', $split ); // Remove all existing title tags. $head = preg_replace( '#