<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/
namespace SiteSEO;
if(!defined('ABSPATH')){
die('HACKING ATTEMPT!');
}
class SocialMetas{
static function add_social_graph(){
global $siteseo;
if(empty($siteseo->setting_enabled['toggle-social'])){
return;
}
$org_type = !empty($siteseo->social_settings['social_knowledge_type']) && $siteseo->social_settings['social_knowledge_type'] !== 'none' ? $siteseo->social_settings['social_knowledge_type'] : '';
$org_name = !empty($siteseo->social_settings['social_knowledge_name']) ? $siteseo->social_settings['social_knowledge_name'] : '';
$org_logo = !empty($siteseo->social_settings['social_knowledge_img']) ? $siteseo->social_settings['social_knowledge_img'] : '';
$org_number = !empty($siteseo->social_settings['social_knowledge_phone']) ? $siteseo->social_settings['social_knowledge_phone'] : '';
$org_contact_type = !empty($siteseo->social_settings['social_knowledge_contact_type']) ? $siteseo->social_settings['social_knowledge_contact_type'] : '';
$org_contact_option = !empty($siteseo->social_settings['social_knowledge_contact_option']) ? $siteseo->social_settings['social_knowledge_contact_option'] : '';
$fb_account = !empty($siteseo->social_settings['social_accounts_facebook']) ? $siteseo->social_settings['social_accounts_facebook'] : '';
$twitter_account = !empty($siteseo->social_settings['social_accounts_twitter']) ? $siteseo->social_settings['social_accounts_twitter'] : '';
$insta_account = !empty($siteseo->social_settings['social_accounts_instagram']) ? $siteseo->social_settings['social_accounts_instagram'] : '';
$yt_account = !empty($siteseo->social_settings['social_accounts_youtube']) ? $siteseo->social_settings['social_accounts_youtube'] : '';
$pt_account = !empty($siteseo->social_settings['social_accounts_pinterest']) ? $siteseo->social_settings['social_accounts_pinterest'] : '';
//description
$site_url = get_site_url();
$site_description = get_bloginfo('name');
//JSON-LD data
$json_ld = [
'@context' => 'https://schema.org',
'@type' => $org_type ? esc_html($org_type) : 'Organization',
'name' => esc_html($org_name),
'url' => esc_url($site_url),
'logo' => esc_url($org_logo),
'description' => esc_html($site_description),
];
//contact point
if(!empty($org_contact_option) && !empty($org_contact_type) && !empty($org_number)){
$json_ld['contactPoint'] = [
'@type' => 'ContactPoint',
'contactType' => esc_html($org_contact_type),
'telephone' => esc_html($org_number),
'contactOption' => esc_html($org_contact_option),
];
}
$same_as = array_filter([esc_url($fb_account), esc_url($twitter_account), esc_url($insta_account), esc_url($yt_account), esc_url($pt_account)]);
if(!empty($same_as)){
$json_ld['sameAs'] = $same_as;
}
// Output JSON-LD script
echo '<script type="application/ld+json">';
echo wp_json_encode($json_ld, JSON_UNESCAPED_SLASHES);
echo '</script>';
}
static function fb_graph(){
global $siteseo, $post;
if(empty($siteseo->setting_enabled['toggle-social']) || empty($siteseo->social_settings['social_facebook_og'])){
return;
}
$fb_page_id = !empty($siteseo->social_settings['social_facebook_link_ownership_id']) ? $siteseo->social_settings['social_facebook_link_ownership_id'] : '';
$fb_link_owership = !empty($siteseo->social_settings['social_facebook_admin_id']) ? $siteseo->social_settings['social_facebook_admin_id'] : '';
$og_type = get_post_meta(get_the_ID(), '_og_type', true);
$og_url = get_home_url();
$og_sitename = get_bloginfo('name');
$og_img = !empty($siteseo->social_settings['social_facebook_img']) ? $siteseo->social_settings['social_facebook_img'] : '';
// Check
$post_id = isset($post) && is_object($post) ? $post->ID : '';
$og_title = get_the_title();
$og_description = get_bloginfo('description');
// Get post types and taxonomies
$post_types = siteseo_post_types();
$taxonomies = get_taxonomies(array('public' => true), 'objects');
// single post types
foreach($post_types as $post_type){
if(is_singular($post_type->name)) {
$og_title = !empty(get_post_meta($post_id, '_siteseo_social_fb_title', true)) ? get_post_meta($post_id, '_siteseo_social_fb_title', true) : $og_title;
$og_description = !empty(get_post_meta($post_id, '_siteseo_social_fb_desc', true)) ? get_post_meta($post_id, '_siteseo_social_fb_desc', true) : $og_description;
$og_img = !empty(get_post_meta($post_id, '_siteseo_social_fb_img', true)) ? get_post_meta($post_id, '_siteseo_social_fb_img', true) : $og_img;
$og_url = urldecode(get_permalink($post_id));
break;
}
}
// taxonomies
foreach($taxonomies as $taxonomy){
if(is_tax($taxonomy->name) || is_category() || is_tag()){
$term = get_queried_object();
$term_id = $term->term_id;
$og_title = !empty(get_term_meta($term_id, '_siteseo_social_fb_title', true)) ? get_term_meta($term_id, '_siteseo_social_fb_title', true) : $term->name;
$og_description = !empty(get_term_meta($term_id, '_siteseo_social_fb_desc', true)) ? get_term_meta($term_id, '_siteseo_social_fb_desc', true) : wp_strip_all_tags(term_description($term_id));
$og_img = !empty(get_term_meta($term_id, '_siteseo_social_fb_img', true)) ? get_term_meta($term_id, '_siteseo_social_fb_img', true) : $og_img;
$og_url = urldecode(get_term_link($term_id));
break;
}
}
if(!empty($og_img)){
$og_img = sanitize_url($og_img);
$og_img_width = 0;
$og_img_height = 0;
if(!empty($og_img)){
$image_info = @getimagesize($og_img);
if($image_info !== false){
$og_img_width = $image_info[0];
$og_img_height = $image_info[1];
}
}
}
if(!$og_type){
$og_type = 'website'; //default website
}
if(!empty($siteseo->social_settings['social_twitter_card'])){
if(!empty($og_url)){
echo '<meta property="og:url" content="'.esc_html($og_url).'" />';
}
if(!empty($og_sitename)){
echo '<meta property="og:site_name" content="'.esc_html($og_sitename).'" />';
}
if(function_exists('get_locale')){
echo '<meta property="og:locale" content="'.esc_html(get_locale()).'" />';
}
if(!empty($og_type)){
echo '<meta property="og:type" content="'.esc_attr($og_type).'" />';
}
if(!empty($og_title)){
echo '<meta property="og:title" content="'.esc_html($og_title).'" />';
}
if(!empty($og_description)){
echo '<meta property="og:description" content="'.esc_html($og_description).'" />';
}
if(!empty($og_img)){
echo '<meta property="og:image" content="'.esc_html($og_img).'" />';
echo '<meta property="og:secure_url" content="'.esc_html($og_img).'" />';
}
if(!empty($og_img_height)){
echo '<meta property="og:image:height" content="'.esc_attr($og_img_height).'" />';
}
if(!empty($og_img_width)){
echo '<meta property="og:image:width" content="'.esc_attr($og_img_width).'" />';
}
if(!empty($fb_page_id)){
echo '<meta property="fb:pages" content="'.esc_html($fb_page_id) .'" />';
}
if(!empty($fb_link_owership)){
echo '<meta property="fb:admins" content="'. esc_html($fb_link_owership).'" />';
}
}
}
static function twitter_card(){
global $siteseo, $post;
if(empty($siteseo->setting_enabled['toggle-social']) || empty($siteseo->social_settings['social_twitter_card'])){
return;
}
$site_type = get_post_meta(get_the_ID(), '_og_type', true);
$site_url = get_home_url();
$sitename = get_bloginfo('name');
$post_id = isset($post) && is_object($post) ? $post->ID : '';
$site_title = get_the_title();
$site_description = get_bloginfo('description');
$twitter_img = isset($siteseo->social_settings['social_twitter_card_img']) ? $siteseo->social_settings['social_twitter_card_img'] : '';
// types and taxonomies
$post_types = siteseo_post_types();
$taxonomies = get_taxonomies(array('public' => true), 'objects');
// single post types
foreach($post_types as $post_type){
if(is_singular($post_type->name)){
$site_title = !empty(get_post_meta($post_id, '_siteseo_social_twitter_title', true)) ? get_post_meta($post_id, '_siteseo_social_twitter_title', true) : $site_title;
$site_description = !empty(get_post_meta($post_id, '_siteseo_social_twitter_desc', true)) ? get_post_meta($post_id, '_siteseo_social_twitter_desc', true) : $site_description;
$twitter_img = !empty(get_post_meta($post_id, '_siteseo_social_twitter_img', true)) ? get_post_meta($post_id, '_siteseo_social_twitter_img', true) : $twitter_img;
$site_url = urldecode(get_permalink($post_id));
break;
}
}
//taxonomies
foreach($taxonomies as $taxonomy){
if(is_tax($taxonomy->name) || is_category() || is_tag()){
$term = get_queried_object();
$term_id = $term->term_id;
$site_title = !empty(get_term_meta($term_id, '_siteseo_social_twitter_title', true)) ? get_term_meta($term_id, '_siteseo_social_twitter_title', true) : $site_title;
$site_description = !empty(get_term_meta($term_id, '_siteseo_social_twitter_desc', true)) ? get_term_meta($term_id, '_siteseo_social_twitter_desc', true) : wp_strip_all_tags(term_description($term_id));
$twitter_img = !empty(get_term_meta($term_id, '_siteseo_social_twitter_img', true)) ? get_term_meta($term_id, '_siteseo_social_twitter_img', true) : $twitter_img;
$site_url = urldecode(get_term_link($term_id));
break;
}
}
if(!$site_type){
$site_type = 'website'; // default website
}
echo '<meta name="twitter:card" content="summary"/>';
echo '<meta name="twitter:locale" content="'.esc_html(get_locale()).'"/>';
if($site_type){
echo '<meta name="twitter:type" content="'.esc_attr($site_type).'"/>';
}
if(!empty($site_title)){
echo '<meta name="twitter:title" content="'.esc_html($site_title).'"/>';
}
if(!empty($site_description)){
echo '<meta name="twitter:description" content="'.esc_html($site_description).'"/>';
}
if(!empty($site_url)){
echo '<meta name="twitter:url" content="'.esc_html($site_url).'"/>';
}
if(!empty($sitename)){
echo '<meta name="twitter:site" content="@'.esc_html($sitename).'"/>';
}
if(!empty($twitter_img)){
echo '<meta name="twitter:image" content="'.esc_html($twitter_img).'"/>';
}
}
}