| Server IP : 172.67.201.108 / Your IP : 216.73.216.11 Web Server : Apache/2.4.68 (Amazon Linux) OpenSSL/3.5.5 System : Linux ip-172-31-69-123.ec2.internal 6.1.176-223.369.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Jul 24 13:34:27 UTC 2026 x86_64 User : ec2-user ( 1000) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/old/app/Common/Main/ |
Upload File : |
<?php
namespace AIOSEO\Plugin\Common\Main;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
use AIOSEO\Plugin\Common\Meta;
/**
* Outputs anything we need to the head of the site.
*
* @since 4.0.0
*/
class Head {
/**
* The page title.
*
* @since 4.0.5
*
* @var string
*/
private static $pageTitle = null;
/**
* GoogleAnalytics class instance.
*
* @since 4.2.7
*
* @var GoogleAnalytics
*/
protected $analytics = null;
/**
* Links class instance.
*
* @since 4.2.7
*
* @var Meta\Links
*/
protected $links = null;
/**
* Keywords class instance.
*
* @since 4.2.7
*
* @var Meta\Keywords
*/
protected $keywords = null;
/**
* Verification class instance.
*
* @since 4.2.7
*
* @var Meta\Verification
*/
protected $verification = null;
/**
* The views to output.
*
* @since 4.2.7
*
* @var array
*/
protected $views = [];
/**
* Class constructor.
*
* @since 4.0.0
*/
public function __construct() {
add_action( 'init', [ $this, 'addAnalytics' ] );
add_action( 'wp', [ $this, 'registerTitleHooks' ], 1000 );
add_action( 'wp_head', [ $this, 'init' ], 1 );
$this->analytics = new GoogleAnalytics();
$this->links = new Meta\Links();
$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',
'clarity' => AIOSEO_DIR . '/app/Common/Views/main/clarity.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, 'endOutputBuffering' ], -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( [ $this, 'rewriteTitle' ] );
}
/**
* Flush and send the output buffer.
*
* @since 4.3.2
*
* @return void
*/
public function endOutputBuffering() {
ob_flush();
}
/**
* Callback to fire when ob_flush() is called.
* Rewrites the page title using output buffering.
*
* @since 4.0.5
* @version 4.3.2
*
* @param string $content The buffer content.
* @return string
*/
public function rewriteTitle( $content ) {
$split = explode( '</head>', $content );
if ( empty( $split[1] ) ) {
return $content;
}
$head = $split[0] . '</head>';
unset( $split[0] );
$body = implode( '</head>', $split );
// Remove all existing title tags.
$head = preg_replace( '#<title.*?\/title>#s', '', $head );
// Add the new title tag to our own comment block.
$pageTitle = aioseo()->helpers->escapeRegexReplacement( $this->getTitle() );
$head = preg_replace( '/(<!--\sAll\sin\sOne\sSEO[a-z0-9\s.]+\s-\saioseo\.com\s-->)/i', "$1\r\n\t\t<title>$pageTitle</title>", $head, 1 );
return $head . $body;
}
/**
* The output function itself.
*
* @since 4.0.0
*
* @return void
*/
public function output() {
remove_action( 'wp_head', 'rel_canonical' );
$views = apply_filters( 'aioseo_meta_views', $this->views );
if ( empty( $views ) ) {
return;
}
echo "\n\t\t<!-- " . sprintf(
'%1$s %2$s',
esc_html( AIOSEO_PLUGIN_NAME ),
aioseo()->helpers->getAioseoVersion() // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
) . " - aioseo.com -->\n";
foreach ( $views as $view ) {
require $view;
}
echo "\t\t<!-- " . esc_html( AIOSEO_PLUGIN_NAME ) . " -->\n\n";
}
}