File "special-page.php"
Full Path: /home/fresvfqn/waterdamagerestorationandrepairsmithtown.com/wp-content/plugins/surerank/inc/frontend/special-page.php
File size: 5.28 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Meta Data
*
* This file will handle functionality to print meta_data in frontend for different requests.
*
* @package surerank
* @since 0.0.1
*/
namespace SureRank\Inc\Frontend;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
use SureRank\Inc\Functions\Get;
use SureRank\Inc\Functions\Settings;
use SureRank\Inc\Functions\Validate;
use SureRank\Inc\Functions\Variables;
use SureRank\Inc\Traits\Get_Instance;
/**
* Home Page SEO
* This class will handle functionality to print meta_data in frontend for different requests.
*
* @since 1.0.0
*/
class Special_Page {
use Get_Instance;
/**
* Constructor
*
* @since 1.0.0
*/
public function __construct() {
add_filter( 'surerank_set_meta', [ $this, 'add_meta_data' ], 1, 1 );
}
/**
* Add meta data
*
* @param array<string, mixed> $meta Meta Data.
* @since 1.0.0
* @return array<string, mixed>
*/
public function add_meta_data( $meta ) {
if ( ! is_home() && ! is_front_page() ) {
return $meta;
}
$meta = get_option( 'show_on_front' ) === 'page'
? $this->get_meta_for_static_homepage( $meta )
: self::get_meta_for_dynamic_homepage();
return Get::fb_image_size( $meta );
}
/**
* Get the meta data for the homepage.
*
* @return array<string, mixed> Meta data for the homepage.
* @since 1.0.0
*/
public static function get_meta_for_dynamic_homepage() {
$page_meta = Settings::get();
$robots = isset( $page_meta['home_page_robots'] ) && is_array( $page_meta['home_page_robots'] ) && isset( $page_meta['home_page_robots']['general'] )
? $page_meta['home_page_robots']['general']
: [];
if ( ! isset( $page_meta['home_page_facebook_title'] ) || $page_meta['home_page_facebook_title'] === '' ) {
$page_meta['home_page_facebook_title'] = $page_meta['home_page_title'] ?? '';
}
if ( ! isset( $page_meta['home_page_facebook_description'] ) || $page_meta['home_page_facebook_description'] === '' ) {
$page_meta['home_page_facebook_description'] = $page_meta['home_page_description'] ?? '';
}
if ( ! isset( $page_meta['home_page_twitter_title'] ) || $page_meta['home_page_twitter_title'] === '' ) {
$page_meta['home_page_twitter_title'] = $page_meta['home_page_title'] ?? '';
}
if ( ! isset( $page_meta['home_page_twitter_description'] ) || $page_meta['home_page_twitter_description'] === '' ) {
$page_meta['home_page_twitter_description'] = $page_meta['home_page_description'] ?? '';
}
$page_meta = [
'page_title' => $page_meta['home_page_title'],
'page_description' => $page_meta['home_page_description'],
'facebook_title' => $page_meta['home_page_facebook_title'],
'facebook_description' => $page_meta['home_page_facebook_description'],
'facebook_image_url' => $page_meta['home_page_facebook_image_url'] ?? $page_meta['fallback_image'] ?? '',
'twitter_title' => $page_meta['home_page_twitter_title'],
'twitter_description' => $page_meta['home_page_twitter_description'],
'twitter_image_url' => $page_meta['home_page_twitter_image_url'] ?? $page_meta['fallback_image'] ?? '',
'post_no_index' => in_array( 'noindex', $robots ) ? 'yes' : 'no',
'post_no_follow' => in_array( 'nofollow', $robots ) ? 'yes' : 'no',
'post_no_archive' => in_array( 'noarchive', $robots ) ? 'yes' : 'no',
'canonical_url' => self::get_canonical_url( $page_meta ),
];
return Variables::replace( $page_meta, (int) get_the_ID() );
}
/**
* Get the page id.
*
* @return int Page id.
* @since 1.3.0
*/
public static function get_page_id() {
if ( is_home() && ! is_front_page() && Get::option( 'page_for_posts' ) ) {
return Get::option( 'page_for_posts' );
}
return (int) get_the_ID();
}
/**
* Get the canonical url.
*
* @param array<string, mixed> $meta Meta data.
* @return string Canonical url.
* @since 1.3.0
*/
public static function get_canonical_url( $meta ) {
if ( is_home() && is_front_page() ) {
return get_home_url();
}
return $meta['canonical_url'] ?? '';
}
/**
* Get meta for static homepage.
*
* @param array<string, mixed> $meta Meta Data.
* @return array<string, mixed> Meta data for static homepage.
* @since 1.0.0
*/
private function get_meta_for_static_homepage( $meta ) {
$auto_generated_og_image = $meta['auto_generated_og_image'] ?? '';
$meta = [
'page_title' => $meta['page_title'] ?? '',
'page_description' => $meta['page_description'] ?? '',
'facebook_title' => $meta['facebook_title'] ?? '',
'facebook_description' => $meta['facebook_description'] ?? '',
'facebook_image_url' => $meta['facebook_image_url'] ?? $auto_generated_og_image,
'twitter_title' => $meta['twitter_title'] ?? '',
'twitter_description' => $meta['twitter_description'] ?? '',
'twitter_image_url' => $meta['twitter_image_url'] ?? $auto_generated_og_image,
'post_no_index' => $meta['post_no_index'] ?? 'no',
'post_no_follow' => $meta['post_no_follow'] ?? 'no',
'post_no_archive' => $meta['post_no_archive'] ?? 'no',
'canonical_url' => self::get_canonical_url( $meta ),
];
$post_meta = Variables::replace( Validate::array( Settings::prep_post_meta( intval( self::get_page_id() ) ) ), intval( self::get_page_id() ) );
return array_merge( $meta, $post_meta );
}
}