Meta Tag Manager - Version 3.0.2

Version Description

  • fixed bug preventing settings from saving if schema settings are not selected
  • added backward compatibility to 4.9 by allowing determine_locale() > get_locale() fallback
Download this release

Release Info

Developer netweblogic
Plugin Icon 128x128 Meta Tag Manager
Version 3.0.2
Comparing to
See all releases

Code changes from version 3.0 to 3.0.2

admin/mtm-update.php CHANGED
@@ -24,9 +24,11 @@ if( defined('MTM_VERSION') ){
24
  }elseif( version_compare( MTM_VERSION, $mtm_version ) ){
25
  delete_option('mtm_shiny_update_notice');
26
  $mtm_custom = get_option('mtm_custom');
27
- if( version_compare( '3.0', $mtm_version ) ){
28
  if( empty($mtm_custom['admin_notices']) ) $mtm_custom['admin_notices'] = array();
29
  $admin_notice = sprintf(esc_html__('Meta Tag Manager 3.0 introduces many new features including Open Graph and Schema support. Check out the newly updated %s!', 'meta-tag-manager'), '<a href="'.admin_url('options-general.php?page=meta-tag-manager').'">'. esc_html__('Settings Page', 'meta-tag-manager') .'</a>');
 
 
30
  $Admin_Notice = new \Meta_Tag_Manager\Admin_Notice('new-features-3-0', 'info', $admin_notice, 'all');
31
  \Meta_Tag_Manager\Admin_Notices::add( $Admin_Notice );
32
  }
24
  }elseif( version_compare( MTM_VERSION, $mtm_version ) ){
25
  delete_option('mtm_shiny_update_notice');
26
  $mtm_custom = get_option('mtm_custom');
27
+ if( version_compare( '3.0.1', $mtm_version ) ){
28
  if( empty($mtm_custom['admin_notices']) ) $mtm_custom['admin_notices'] = array();
29
  $admin_notice = sprintf(esc_html__('Meta Tag Manager 3.0 introduces many new features including Open Graph and Schema support. Check out the newly updated %s!', 'meta-tag-manager'), '<a href="'.admin_url('options-general.php?page=meta-tag-manager').'">'. esc_html__('Settings Page', 'meta-tag-manager') .'</a>');
30
+ $admin_notice .= '</p><p>'. esc_html__('We are also proud to announce a new Pro add-on to help fund further development of this plugin, which has been freely available since 2009!', 'meta-tag-manager');
31
+ $admin_notice .= '</p><p><a class="button-primary" href="'.admin_url('options-general.php?page=meta-tag-manager#go-pro').'">'. esc_html__('Learn More', 'meta-tag-manager') .'</a> <a class="mtm-notice-dismiss button-secondary">'.__('Dismiss').'</a>';
32
  $Admin_Notice = new \Meta_Tag_Manager\Admin_Notice('new-features-3-0', 'info', $admin_notice, 'all');
33
  \Meta_Tag_Manager\Admin_Notices::add( $Admin_Notice );
34
  }
admin/notices/admin-notices.php CHANGED
@@ -196,6 +196,9 @@ class Admin_Notices {
196
  var the_notice = $(this).closest('.mtm-admin-notice');
197
  $.get('<?php echo admin_url('admin-ajax.php'); ?>', {'action' : the_notice.data('dismiss-action'), 'notice' : the_notice.data('dismiss-key') });
198
  });
 
 
 
199
  });
200
  </script>
201
  <?php
196
  var the_notice = $(this).closest('.mtm-admin-notice');
197
  $.get('<?php echo admin_url('admin-ajax.php'); ?>', {'action' : the_notice.data('dismiss-action'), 'notice' : the_notice.data('dismiss-key') });
198
  });
199
+ $('.mtm-admin-notice').on('click', '.mtm-notice-dismiss', function(){
200
+ $(this).closest('.mtm-admin-notice').find('button.notice-dismiss').trigger('click');
201
+ });
202
  });
203
  </script>
204
  <?php
admin/settings/open-graph.php CHANGED
@@ -5,7 +5,7 @@ global $mtm_submit_button;
5
  $og = Open_Graph::get_options( false ); // return with defaults merged in
6
  $test_url_google = "https://search.google.com/test/rich-results?url=" . urlencode(get_site_url());
7
  $test_url_fb = "https://developers.facebook.com/tools/debug/?q=" . urlencode(get_site_url());
8
- $test_url_twitter = "https://developers.facebook.com/tools/debug/?q=" . urlencode(get_site_url());
9
 
10
  ?>
11
  <p>
5
  $og = Open_Graph::get_options( false ); // return with defaults merged in
6
  $test_url_google = "https://search.google.com/test/rich-results?url=" . urlencode(get_site_url());
7
  $test_url_fb = "https://developers.facebook.com/tools/debug/?q=" . urlencode(get_site_url());
8
+ $test_url_twitter = "https://cards-dev.twitter.com/validator?url=" . urlencode(get_site_url());
9
 
10
  ?>
11
  <p>
admin/settings/schema.php CHANGED
@@ -106,7 +106,7 @@ use Meta_Tag_Manager\Schema;
106
  )
107
  );
108
  $site_type_options = array(
109
- '' => esc_html__('Chooase a site type', 'meta-tag-manager'),
110
  'Person' => esc_html__('Personal Website or Blog', 'meta-tag-manager'),
111
  'Organization' => esc_html__('Business or Organization', 'meta-tag-manager'),
112
  );
@@ -130,7 +130,7 @@ use Meta_Tag_Manager\Schema;
130
  <h3><?php esc_html_e('General Information', 'meta-tag-manager'); ?></h3>
131
  <table class="form-table">
132
  <?php
133
- mtm_input_select( esc_html__('This website represents a ', 'meta-tag-manager'), 'mtm_schema_site_type', $site_type_options, $schema['type'] );
134
  $org_types = array( 'Organization' => esc_html__('General/Other', 'meta-tag-manager') );
135
  $org_subtypes = array();
136
  foreach( $schema_types['Organization']['types'] as $type => $type_data ){
@@ -251,7 +251,7 @@ use Meta_Tag_Manager\Schema;
251
  <table class="form-table mtm-schema-sitelinks">
252
  <?php
253
  $menus = wp_get_nav_menus();
254
- $nav_menus = array( '' => esc_html__('Choose a nav menu', 'meta-tag-menu'), 0 => esc_html__('No Sitelinks Map', 'meta-tag-manager') );
255
  foreach( $menus as $menu ){
256
  $nav_menus[$menu->term_id] = $menu->name;
257
  }
@@ -261,8 +261,8 @@ use Meta_Tag_Manager\Schema;
261
 
262
  $description = esc_html__("Google can choose to display a search box below your search result, directly allowing users to search your site. You can choose to enable this or specifically ask Google not to include it. %s", 'meta-tag-manager');
263
  $description = sprintf( $description, '<a href="https://developers.google.com/search/docs/advanced/structured-data/sitelinks-searchbox">'. esc_html__('Learn more', 'meta-tag-manager') .'</a>');
264
- $search_options = array( '' => esc_html__('Enable or Disable', 'meta-tag-manager'), 1 => esc_html__('Enable Sitelinks Search', 'meta-tag-manager'), 2 => esc_html__('Disable Sitelinks Search', 'meta-tag-manager') );
265
- mtm_input_select( esc_html__('Enable Sitelinks Searchbox?', 'meta-tag-manager'), 'mtm_schema_sitelinks_search', $search_options, $schema['sitelinks']['menu'], $description)
266
  ?>
267
  </table>
268
 
@@ -287,6 +287,14 @@ use Meta_Tag_Manager\Schema;
287
  var selected_value = $('.mtm-schema-type-'+ value );
288
  if( selected_value.length > 0 ) selected_value.show();
289
  }).trigger('change');
 
 
 
 
 
 
 
 
290
  $('.mtm-schema-profile-add').on('click', function(e){
291
  e.preventDefault();
292
  var row = $('#mtm_schema_profiles_other_row').clone().removeAttr('id').show();
106
  )
107
  );
108
  $site_type_options = array(
109
+ '0' => esc_html__('Chooase a site type', 'meta-tag-manager'),
110
  'Person' => esc_html__('Personal Website or Blog', 'meta-tag-manager'),
111
  'Organization' => esc_html__('Business or Organization', 'meta-tag-manager'),
112
  );
130
  <h3><?php esc_html_e('General Information', 'meta-tag-manager'); ?></h3>
131
  <table class="form-table">
132
  <?php
133
+ mtm_input_select( esc_html__('This website represents a', 'meta-tag-manager'), 'mtm_schema_site_type', $site_type_options, $schema['type'] );
134
  $org_types = array( 'Organization' => esc_html__('General/Other', 'meta-tag-manager') );
135
  $org_subtypes = array();
136
  foreach( $schema_types['Organization']['types'] as $type => $type_data ){
251
  <table class="form-table mtm-schema-sitelinks">
252
  <?php
253
  $menus = wp_get_nav_menus();
254
+ $nav_menus = array( 0 => esc_html__('No Sitelinks Map', 'meta-tag-manager') );
255
  foreach( $menus as $menu ){
256
  $nav_menus[$menu->term_id] = $menu->name;
257
  }
261
 
262
  $description = esc_html__("Google can choose to display a search box below your search result, directly allowing users to search your site. You can choose to enable this or specifically ask Google not to include it. %s", 'meta-tag-manager');
263
  $description = sprintf( $description, '<a href="https://developers.google.com/search/docs/advanced/structured-data/sitelinks-searchbox">'. esc_html__('Learn more', 'meta-tag-manager') .'</a>');
264
+ $search_options = array( 0 => esc_html__('Enable or Disable', 'meta-tag-manager'), 1 => esc_html__('Enable Sitelinks Search', 'meta-tag-manager'), 2 => esc_html__('Disable Sitelinks Search', 'meta-tag-manager') );
265
+ mtm_input_select( esc_html__('Enable Sitelinks Searchbox?', 'meta-tag-manager'), 'mtm_schema_sitelinks_search', $search_options, $schema['sitelinks']['search'], $description)
266
  ?>
267
  </table>
268
 
287
  var selected_value = $('.mtm-schema-type-'+ value );
288
  if( selected_value.length > 0 ) selected_value.show();
289
  }).trigger('change');
290
+ $('#mtm_schema_contact_page').on('change', function(){
291
+ var value = $(this).find(":selected").val();
292
+ if( value > 0 ) {
293
+ $('#mtm_schema_contact_url_row').hide();
294
+ }else{
295
+ $('#mtm_schema_contact_url_row').show();
296
+ }
297
+ }).trigger('change');
298
  $('.mtm-schema-profile-add').on('click', function(e){
299
  e.preventDefault();
300
  var row = $('#mtm_schema_profiles_other_row').clone().removeAttr('id').show();
classes/open-graph.php CHANGED
@@ -59,6 +59,7 @@ class Open_Graph {
59
  if( $defaults === null ) {
60
  return !empty($mtm_custom['og']) ? $mtm_custom['og'] : false;
61
  }else{
 
62
  $og = array(
63
  'enabled' => false,
64
  'generate_singular' => false,
@@ -67,7 +68,7 @@ class Open_Graph {
67
  'title' => get_bloginfo('name'),
68
  'description' => get_bloginfo('description'),
69
  'image' => get_theme_mod( 'custom_logo' ),
70
- 'locale' => determine_locale(),
71
  'site_name' => get_bloginfo('name'),
72
  ),
73
  'twitter' => array(
59
  if( $defaults === null ) {
60
  return !empty($mtm_custom['og']) ? $mtm_custom['og'] : false;
61
  }else{
62
+ $locale = (function_exists('determine_locale')) ? determine_locale() : get_locale();
63
  $og = array(
64
  'enabled' => false,
65
  'generate_singular' => false,
68
  'title' => get_bloginfo('name'),
69
  'description' => get_bloginfo('description'),
70
  'image' => get_theme_mod( 'custom_logo' ),
71
+ 'locale' => $locale,
72
  'site_name' => get_bloginfo('name'),
73
  ),
74
  'twitter' => array(
classes/schema-admin.php CHANGED
@@ -5,7 +5,12 @@ class Schema_Admin {
5
  public static function get_post(){
6
  $schema = Schema::get_options(true);
7
  $schema['enabled'] = !empty($_REQUEST['mtm_schema_enabled']);
 
8
  if( !empty($_REQUEST['mtm_schema_site_type']) ) $schema['type'] = sanitize_text_field($_REQUEST['mtm_schema_site_type']);
 
 
 
 
9
  if( !empty($_REQUEST['mtm_schema_site_logo']) ) $schema['logo'] = absint($_REQUEST['mtm_schema_site_logo']);
10
  if( $schema['type'] == 'Person' ){
11
  if( !empty($_REQUEST['mtm_schema_person_name']) ) $schema['name'] = sanitize_text_field($_REQUEST['mtm_schema_person_name']);
@@ -20,16 +25,16 @@ class Schema_Admin {
20
  }
21
  $schema['Contact']['enabled'] = !empty($_REQUEST['mtm_schema_contact']);
22
  if( $schema['Contact']['enabled'] ) {
23
- if( !empty($_REQUEST['mtm_schema_contact_name']) ) $schema['Contact']['name'] = sanitize_text_field($_REQUEST['mtm_schema_site_type']);
24
  if( !empty($_REQUEST['mtm_schema_contact_page']) ) {
25
- $schema['Contact']['url'] = get_permalink(absint($_REQUEST['mtm_schema_contact_page']));
26
  }elseif( !empty($_REQUEST['mtm_schema_contact_url']) ) {
27
  $schema['Contact']['url'] = esc_url_raw($_REQUEST['mtm_schema_contact_url']);
28
  }
29
  if( !empty($_REQUEST['mtm_schema_contact_telephone']) ) $schema['Contact']['telephone'] = sanitize_text_field($_REQUEST['mtm_schema_contact_telephone']);
30
- if( !empty($_REQUEST['mtm_schema_contact_email']) ) $schema['Contact']['email'] = sanitize_email($_REQUEST['mtm_schema_contact_email']);
31
  }
32
- if( !empty($_REQUEST['mtm_schema_sitelinks_menu']) ) $schema['sitelinks']['menu'] = absint($_REQUEST['mtm_schema_sitelinks_menu']);
33
  if( !empty($_REQUEST['mtm_schema_sitelinks_search']) ) $schema['sitelinks']['search'] = absint($_REQUEST['mtm_schema_sitelinks_search']);
34
  if( !empty($_REQUEST['mtm_schema_profiles']) && is_array($_REQUEST['mtm_schema_profiles']) ){
35
  $schema['profiles'] = array();
5
  public static function get_post(){
6
  $schema = Schema::get_options(true);
7
  $schema['enabled'] = !empty($_REQUEST['mtm_schema_enabled']);
8
+ if( !$schema['enabled'] ) return $schema;
9
  if( !empty($_REQUEST['mtm_schema_site_type']) ) $schema['type'] = sanitize_text_field($_REQUEST['mtm_schema_site_type']);
10
+ if( empty($schema['type']) ){
11
+ global $MTM_Notices; /* @var \Meta_Tag_Manager\Notices $MTM_Notices */
12
+ $MTM_Notices->add( sprintf(esc_html__('You must select a value in the %s field in the %s tab in order for schema markup to show up on your homepage.', 'meta-tag-manager'), '<code>'.esc_html__('This website represents a', 'meta-tag-manager').'</code>', '<code>'.esc_html__('Structured Data (Schema)', 'meta-tag-manager').'</code>'), 'errors', true );
13
+ }
14
  if( !empty($_REQUEST['mtm_schema_site_logo']) ) $schema['logo'] = absint($_REQUEST['mtm_schema_site_logo']);
15
  if( $schema['type'] == 'Person' ){
16
  if( !empty($_REQUEST['mtm_schema_person_name']) ) $schema['name'] = sanitize_text_field($_REQUEST['mtm_schema_person_name']);
25
  }
26
  $schema['Contact']['enabled'] = !empty($_REQUEST['mtm_schema_contact']);
27
  if( $schema['Contact']['enabled'] ) {
28
+ if( !empty($_REQUEST['mtm_schema_contact_name']) ) $schema['Contact']['name'] = sanitize_text_field($_REQUEST['mtm_schema_contact_name']);
29
  if( !empty($_REQUEST['mtm_schema_contact_page']) ) {
30
+ $schema['Contact']['url'] = absint($_REQUEST['mtm_schema_contact_page']);
31
  }elseif( !empty($_REQUEST['mtm_schema_contact_url']) ) {
32
  $schema['Contact']['url'] = esc_url_raw($_REQUEST['mtm_schema_contact_url']);
33
  }
34
  if( !empty($_REQUEST['mtm_schema_contact_telephone']) ) $schema['Contact']['telephone'] = sanitize_text_field($_REQUEST['mtm_schema_contact_telephone']);
35
+ if( !empty($_REQUEST['mtm_schema_contact_email']) ) $schema['Contact']['email'] = sanitize_email($_REQUEST['mtm_schema_contact_email']);
36
  }
37
+ if( isset($_REQUEST['mtm_schema_sitelinks_menu']) ) $schema['sitelinks']['menu'] = absint($_REQUEST['mtm_schema_sitelinks_menu']);
38
  if( !empty($_REQUEST['mtm_schema_sitelinks_search']) ) $schema['sitelinks']['search'] = absint($_REQUEST['mtm_schema_sitelinks_search']);
39
  if( !empty($_REQUEST['mtm_schema_profiles']) && is_array($_REQUEST['mtm_schema_profiles']) ){
40
  $schema['profiles'] = array();
classes/schema.php CHANGED
@@ -8,6 +8,7 @@ class Schema {
8
  if( is_admin() ){
9
  include('schema-admin.php');
10
  }
 
11
  }
12
 
13
  public static function output(){
8
  if( is_admin() ){
9
  include('schema-admin.php');
10
  }
11
+ add_action('mtm_head', 'Meta_Tag_Manager\Schema::output');
12
  }
13
 
14
  public static function output(){
meta-tag-manager.php CHANGED
@@ -1,15 +1,15 @@
1
  <?php
2
  /*
3
  Plugin Name: Meta Tag Manager
4
- Plugin URI: https://wordpress.org/plugins/meta-tag-manager/
5
  Description: A simple plugin to manage meta tags and other meta data that appear on aread of your site or individual posts. This can be used for verifiying google adding open graph tags, SEO meta and more.
6
- Author: Marcus Sykes
7
- Version: 3.0
8
- Author URI: https://metatagmanager/?utm_source=plugin-header&utm_medium=plugin&utm_campaign=plugin
9
  Text Domain: meta-tag-manager
10
  */
11
  /*
12
- Copyright (C) 2021 Marcus Sykes
13
 
14
  This program is free software; you can redistribute it and/or modify
15
  it under the terms of the GNU General Public License as published by
@@ -26,7 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
26
  */
27
  if( !defined('ABSPATH') ) exit;
28
 
29
- define('MTM_VERSION', '3.0');
30
  define('MTM_DIR', dirname( __FILE__ )); //an absolute path to this directory
31
 
32
  class Meta_Tag_Manager {
@@ -114,6 +114,7 @@ class Meta_Tag_Manager {
114
  echo "\r\n";
115
  }
116
  }
 
117
  }
118
 
119
  public static function get_data(){
1
  <?php
2
  /*
3
  Plugin Name: Meta Tag Manager
4
+ Plugin URI: https://metatagmanager.com
5
  Description: A simple plugin to manage meta tags and other meta data that appear on aread of your site or individual posts. This can be used for verifiying google adding open graph tags, SEO meta and more.
6
+ Author: Pixelite
7
+ Version: 3.0.2
8
+ Author URI: https://pixelite.com/?utm_source=plugin-header&utm_medium=plugin&utm_campaign=plugin
9
  Text Domain: meta-tag-manager
10
  */
11
  /*
12
+ Copyright (C) 2022 Marcus Sykes
13
 
14
  This program is free software; you can redistribute it and/or modify
15
  it under the terms of the GNU General Public License as published by
26
  */
27
  if( !defined('ABSPATH') ) exit;
28
 
29
+ define('MTM_VERSION', '3.0.2');
30
  define('MTM_DIR', dirname( __FILE__ )); //an absolute path to this directory
31
 
32
  class Meta_Tag_Manager {
114
  echo "\r\n";
115
  }
116
  }
117
+ do_action('mtm_head', $meta_tags);
118
  }
119
 
120
  public static function get_data(){
readme.txt CHANGED
@@ -1,16 +1,16 @@
1
  === Meta Tag Manager ===
2
- Contributors: netweblogic
3
  Tags: google, SEO, yahoo, tags, webmaster tools, meta, meta tags, meta-tags, og, ogp, open graph, twitter cards, schema, rich-snippets, structured-data
4
  Text Domain: meta-tag-manager
5
  Requires at least: 3.6
6
- Tested up to: 5.8.1
7
- Stable tag: 3.0
8
 
9
  Easily add and manage custom meta tags to various parts of your site or on individual posts, such as Yahoo and Google verification tags.
10
 
11
  == Description ==
12
 
13
- <blockquote>Meta Tag Manager 3.0 builds on the great success of 2.0 and also marks the launch of our <a href="https://metatagmanager/gopro/?utm_source=plugin-readme&utm_medium=plugin&utm_campaign=plugin">new Pro Add-on</a>. Since 2009 we've provided a freely available, regularly maintained plugin with support and we hope to continue doing so for many years to come!
14
 
15
  We have plenty of ideas of what to add to the plugin, we'd love to hear your suggestions too, please let us know on our <a href="https://wordpress.org/support/plugin/meta-tag-manager">support forums</a>.</blockquote>
16
 
@@ -30,7 +30,7 @@ Use cases include:
30
  * Adding Google and Yahoo site verification tags
31
  * Adding additional open graph, twitter card or other social media meta info not supported by other SEO/Meta plugins
32
 
33
- <a href="https://metatagmanager/gopro/?utm_source=plugin-readme&utm_medium=plugin&utm_campaign=plugin">Go Pro</a> for many newly added features, including:
34
 
35
  * Dynamic placeholders to include data about the page being displayed, such as page title, comment count, thumbnail URLs and more!
36
  * Additional contexts to add global meta tags, as well as exclusion rules for finer-grained controls.
@@ -83,6 +83,15 @@ Please visit our <a href="https://wordpress.org/support/plugin/meta-tag-manager"
83
  3. If enabled you can add meta tags to a specific post in it's own meta box
84
 
85
  == Changelog ==
 
 
 
 
 
 
 
 
 
86
  = 3.0 =
87
  * added open graph settings and support for home page
88
  * added twitter card open graph settings and support for home page
1
  === Meta Tag Manager ===
2
+ Contributors: pxlite, msykes, netweblogic
3
  Tags: google, SEO, yahoo, tags, webmaster tools, meta, meta tags, meta-tags, og, ogp, open graph, twitter cards, schema, rich-snippets, structured-data
4
  Text Domain: meta-tag-manager
5
  Requires at least: 3.6
6
+ Tested up to: 6.1
7
+ Stable tag: 3.0.2
8
 
9
  Easily add and manage custom meta tags to various parts of your site or on individual posts, such as Yahoo and Google verification tags.
10
 
11
  == Description ==
12
 
13
+ <blockquote>Meta Tag Manager 3.0 builds on the great success of 2.0 and also marks the launch of our <a href="https://metatagmanager.com/gopro/?utm_source=plugin-readme&utm_medium=plugin&utm_campaign=plugin">new Pro Add-on</a>. Since 2009 we've provided a freely available, regularly maintained plugin with support and we hope to continue doing so for many years to come!
14
 
15
  We have plenty of ideas of what to add to the plugin, we'd love to hear your suggestions too, please let us know on our <a href="https://wordpress.org/support/plugin/meta-tag-manager">support forums</a>.</blockquote>
16
 
30
  * Adding Google and Yahoo site verification tags
31
  * Adding additional open graph, twitter card or other social media meta info not supported by other SEO/Meta plugins
32
 
33
+ <a href="https://metatagmanager.com/gopro/?utm_source=plugin-readme&utm_medium=plugin&utm_campaign=plugin">Go Pro</a> for many newly added features, including:
34
 
35
  * Dynamic placeholders to include data about the page being displayed, such as page title, comment count, thumbnail URLs and more!
36
  * Additional contexts to add global meta tags, as well as exclusion rules for finer-grained controls.
83
  3. If enabled you can add meta tags to a specific post in it's own meta box
84
 
85
  == Changelog ==
86
+ = 3.0.2 =
87
+ * fixed bug preventing settings from saving if schema settings are not selected
88
+ * added backward compatibility to 4.9 by allowing determine_locale() > get_locale() fallback
89
+
90
+ = 3.0.1 =
91
+ * fixed issues with schema settings saving
92
+ * fixed open graph twitter test link
93
+ * fixed some admin notice dismiss issues
94
+
95
  = 3.0 =
96
  * added open graph settings and support for home page
97
  * added twitter card open graph settings and support for home page