WP SEO Structured Data Schema - Version 2.4.1

Version Description

Download this release

Release Info

Developer kcseopro
Plugin Icon 128x128 WP SEO Structured Data Schema
Version 2.4.1
Comparing to
See all releases

Code changes from version 2.3 to 2.4.1

lib/models/KcSeoSchemaModel.php CHANGED
@@ -28,7 +28,7 @@ if ( ! class_exists( 'KcSeoSchemaModel' ) ):
28
  if ( ! empty( $metaData['author'] ) ) {
29
  $article["author"] = array(
30
  "@type" => "Person",
31
- "name" => $KcSeoWPSchema->sanitizeOutPut( $metaData['author'] )
32
  );
33
  }
34
  if ( ! empty( $metaData['publisher'] ) ) {
@@ -94,7 +94,7 @@ if ( ! class_exists( 'KcSeoSchemaModel' ) ):
94
  if ( ! empty( $metaData['author'] ) ) {
95
  $newsArticle["author"] = array(
96
  "@type" => "Person",
97
- "name" => $KcSeoWPSchema->sanitizeOutPut( $metaData['author'] )
98
  );
99
  }
100
  if ( ! empty( $metaData['image'] ) ) {
@@ -157,7 +157,7 @@ if ( ! class_exists( 'KcSeoSchemaModel' ) ):
157
  if ( ! empty( $metaData['author'] ) ) {
158
  $blogPosting["author"] = array(
159
  "@type" => "Person",
160
- "name" => $KcSeoWPSchema->sanitizeOutPut( $metaData['author'] )
161
  );
162
  }
163
  if ( ! empty( $metaData['image'] ) ) {
@@ -517,20 +517,20 @@ if ( ! class_exists( 'KcSeoSchemaModel' ) ):
517
  'textarea' );
518
  }
519
  if ( ! empty( $metaData['image'] ) ) {
520
- $img = $KcSeoWPSchema->imageInfo( absint( $metaData['image'] ) );
521
  $localBusiness["image"] = $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' );
522
  }
523
  if ( ! empty( $metaData['priceRange'] ) ) {
524
  $localBusiness["priceRange"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['priceRange'] );
525
  }
526
  if ( ! empty( $metaData['addressLocality'] ) || ! empty( $metaData['addressRegion'] )
527
- || ! empty( $metaData['postalCode'] ) || ! empty( $metaData['streetAddress'] )) {
528
  $localBusiness["address"] = array(
529
- "@type" => "PostalAddress",
530
  "addressLocality" => $KcSeoWPSchema->sanitizeOutPut( $metaData['addressLocality'] ),
531
- "addressRegion" => $KcSeoWPSchema->sanitizeOutPut( $metaData['addressRegion'] ),
532
- "postalCode"=> $KcSeoWPSchema->sanitizeOutPut( $metaData['postalCode'] ),
533
- "streetAddress"=> $KcSeoWPSchema->sanitizeOutPut( $metaData['streetAddress'] )
534
  );
535
  }
536
 
@@ -555,6 +555,7 @@ if ( ! class_exists( 'KcSeoSchemaModel' ) ):
555
  $id = $data['id'];
556
  $name = $data['name'];
557
  $value = $data['value'];
 
558
 
559
  $class = isset( $data['class'] ) ? ( $data['class'] ? $data['class'] : null ) : null;
560
  $require = ( isset( $data['required'] ) ? ( $data['required'] ? "<span class='required'>*</span>" : null ) : null );
@@ -577,11 +578,7 @@ if ( ! class_exists( 'KcSeoSchemaModel' ) ):
577
  break;
578
 
579
  case 'number':
580
- if ( $data['fieldId'] == 'price' ) {
581
- $html .= "<input type='number' step='any' id='{$id}' class='{$class}' name='{$name}' value='" . esc_attr( $value ) . "' />";
582
- } else {
583
- $html .= "<input type='number' id='{$id}' class='{$class}' name='{$name}' value='" . esc_attr( $value ) . "' />";
584
- }
585
  break;
586
  case 'textarea':
587
  $html .= "<textarea id='{$id}' class='{$class}' name='{$name}' >" . wp_kses( $value,
@@ -906,6 +903,7 @@ if ( ! class_exists( 'KcSeoSchemaModel' ) ):
906
  'price' => array(
907
  'title' => 'Price (Recommended)',
908
  'type' => 'number',
 
909
  'desc' => "This is highly recommended. The lowest available price, including service charges and fees, of this type of ticket. <span class='required'>Not required but (Recommended)</span>"
910
  ),
911
  'priceCurrency' => array(
@@ -950,17 +948,19 @@ if ( ! class_exists( 'KcSeoSchemaModel' ) ):
950
  ),
951
  'ratingValue' => array(
952
  'title' => 'Ratting value',
953
- 'type' => 'text',
954
  'desc' => "Rating value. (1 , 2.5, 3, 5 etc)"
955
  ),
956
  'reviewCount' => array(
957
  'title' => 'Total review count',
958
  'type' => 'number',
 
959
  'desc' => "Rating ratting value. <span class='required'>This is required if (Ratting value) is given</span>"
960
  ),
961
  'price' => array(
962
  'title' => 'Price',
963
  'type' => 'number',
 
964
  'desc' => "The lowest available price, including service charges and fees, of this type of ticket."
965
  ),
966
  'priceCurrency' => array(
@@ -1180,16 +1180,19 @@ if ( ! class_exists( 'KcSeoSchemaModel' ) ):
1180
  'ratingValue' => array(
1181
  'title' => 'Rating value',
1182
  'type' => 'number',
 
1183
  'desc' => "A numerical quality rating for the item."
1184
  ),
1185
  'bestRating' => array(
1186
  'title' => 'Best rating',
1187
  'type' => 'number',
 
1188
  'desc' => "The highest value allowed in this rating system."
1189
  ),
1190
  'worstRating' => array(
1191
  'title' => 'Worst rating',
1192
  'type' => 'number',
 
1193
  'desc' => "The lowest value allowed in this rating system. * Required if the rating system is not on a 5-point scale. If worstRating is omitted, 1 is assumed."
1194
  ),
1195
  'publisher' => array(
@@ -1249,23 +1252,27 @@ if ( ! class_exists( 'KcSeoSchemaModel' ) ):
1249
  'ratingCount' => array(
1250
  'title' => 'Rating Count',
1251
  'type' => 'number',
 
1252
  'required' => true,
1253
  'desc' => "The total number of ratings for the item on your site. <span class='required'>* At least one of ratingCount or reviewCount is required.</span>"
1254
  ),
1255
  'reviewCount' => array(
1256
  'title' => 'Review Count',
1257
  'type' => 'number',
 
1258
  'required' => true,
1259
  'desc' => "Specifies the number of people who provided a review with or without an accompanying rating. At least one of ratingCount or reviewCount is required."
1260
  ),
1261
  'ratingValue' => array(
1262
  'title' => 'Rating Value',
1263
  'type' => 'number',
 
1264
  'required' => true,
1265
  'desc' => "A numerical quality rating for the item."
1266
  ),
1267
  'ratingValue' => array(
1268
  'title' => 'Rating Value',
 
1269
  'type' => 'number',
1270
  'required' => true,
1271
  'desc' => "A numerical quality rating for the item."
@@ -1273,12 +1280,14 @@ if ( ! class_exists( 'KcSeoSchemaModel' ) ):
1273
  'bestRating' => array(
1274
  'title' => 'Best Rating',
1275
  'type' => 'number',
 
1276
  'required' => true,
1277
  'desc' => "The highest value allowed in this rating system. <span class='required'>* Required if the rating system is not a 5-point scale.</span> If bestRating is omitted, 5 is assumed."
1278
  ),
1279
  'worstRating' => array(
1280
  'title' => 'Worst Rating',
1281
  'type' => 'number',
 
1282
  'required' => true,
1283
  'desc' => "The lowest value allowed in this rating system. <span class='required'>* Required if the rating system is not a 5-point scale.</span> If worstRating is omitted, 1 is assumed."
1284
  )
@@ -1338,47 +1347,47 @@ if ( ! class_exists( 'KcSeoSchemaModel' ) ):
1338
  'localBusiness' => array(
1339
  'title' => 'Local Business',
1340
  'fields' => array(
1341
- 'active' => array(
1342
  'type' => 'checkbox'
1343
  ),
1344
- 'name' => array(
1345
- 'title' => 'Name',
1346
- 'type' => 'text',
1347
  'required' => true
1348
  ),
1349
- 'description' => array(
1350
  'title' => 'Description',
1351
  'type' => 'textarea',
1352
  ),
1353
- 'image' => array(
1354
  'title' => 'Business Logo',
1355
  'type' => 'image',
1356
  'required' => true
1357
  ),
1358
- 'priceRange' => array(
1359
- 'title' => 'Price Range (Recommended)',
1360
- 'type' => 'text',
1361
- 'desc' => "The price range of the business, for example $$$."
1362
  ),
1363
  'addressLocality' => array(
1364
  'title' => 'Address locality',
1365
  'type' => 'text',
1366
- 'desc' => 'City (i.e Kansas city)'
1367
  ),
1368
- 'addressRegion' => array(
1369
  'title' => 'Address region',
1370
  'type' => 'text',
1371
- 'desc' => 'State (i.e. MO)'
1372
  ),
1373
- 'postalCode' => array(
1374
  'title' => 'Postal code',
1375
  'type' => 'text',
1376
  ),
1377
- 'streetAddress' => array(
1378
  'title' => 'Street address',
1379
  'type' => 'text',
1380
  ),
1381
- 'telephone' => array(
1382
  'title' => 'Telephone (Recommended)',
1383
  'type' => 'text',
1384
  )
28
  if ( ! empty( $metaData['author'] ) ) {
29
  $article["author"] = array(
30
  "@type" => "Person",
31
+ "name" => $KcSeoWPSchema->sanitizeOutPut( $metaData['author'] )
32
  );
33
  }
34
  if ( ! empty( $metaData['publisher'] ) ) {
94
  if ( ! empty( $metaData['author'] ) ) {
95
  $newsArticle["author"] = array(
96
  "@type" => "Person",
97
+ "name" => $KcSeoWPSchema->sanitizeOutPut( $metaData['author'] )
98
  );
99
  }
100
  if ( ! empty( $metaData['image'] ) ) {
157
  if ( ! empty( $metaData['author'] ) ) {
158
  $blogPosting["author"] = array(
159
  "@type" => "Person",
160
+ "name" => $KcSeoWPSchema->sanitizeOutPut( $metaData['author'] )
161
  );
162
  }
163
  if ( ! empty( $metaData['image'] ) ) {
517
  'textarea' );
518
  }
519
  if ( ! empty( $metaData['image'] ) ) {
520
+ $img = $KcSeoWPSchema->imageInfo( absint( $metaData['image'] ) );
521
  $localBusiness["image"] = $KcSeoWPSchema->sanitizeOutPut( $img['url'], 'url' );
522
  }
523
  if ( ! empty( $metaData['priceRange'] ) ) {
524
  $localBusiness["priceRange"] = $KcSeoWPSchema->sanitizeOutPut( $metaData['priceRange'] );
525
  }
526
  if ( ! empty( $metaData['addressLocality'] ) || ! empty( $metaData['addressRegion'] )
527
+ || ! empty( $metaData['postalCode'] ) || ! empty( $metaData['streetAddress'] ) ) {
528
  $localBusiness["address"] = array(
529
+ "@type" => "PostalAddress",
530
  "addressLocality" => $KcSeoWPSchema->sanitizeOutPut( $metaData['addressLocality'] ),
531
+ "addressRegion" => $KcSeoWPSchema->sanitizeOutPut( $metaData['addressRegion'] ),
532
+ "postalCode" => $KcSeoWPSchema->sanitizeOutPut( $metaData['postalCode'] ),
533
+ "streetAddress" => $KcSeoWPSchema->sanitizeOutPut( $metaData['streetAddress'] )
534
  );
535
  }
536
 
555
  $id = $data['id'];
556
  $name = $data['name'];
557
  $value = $data['value'];
558
+ $attr = !empty($data['attr']) ? $data['attr'] : null;
559
 
560
  $class = isset( $data['class'] ) ? ( $data['class'] ? $data['class'] : null ) : null;
561
  $require = ( isset( $data['required'] ) ? ( $data['required'] ? "<span class='required'>*</span>" : null ) : null );
578
  break;
579
 
580
  case 'number':
581
+ $html .= "<input type='number' {$attr} id='{$id}' class='{$class}' name='{$name}' value='" . esc_attr( $value ) . "' />";
 
 
 
 
582
  break;
583
  case 'textarea':
584
  $html .= "<textarea id='{$id}' class='{$class}' name='{$name}' >" . wp_kses( $value,
903
  'price' => array(
904
  'title' => 'Price (Recommended)',
905
  'type' => 'number',
906
+ 'attr' => 'step="any"',
907
  'desc' => "This is highly recommended. The lowest available price, including service charges and fees, of this type of ticket. <span class='required'>Not required but (Recommended)</span>"
908
  ),
909
  'priceCurrency' => array(
948
  ),
949
  'ratingValue' => array(
950
  'title' => 'Ratting value',
951
+ 'type' => 'number',
952
  'desc' => "Rating value. (1 , 2.5, 3, 5 etc)"
953
  ),
954
  'reviewCount' => array(
955
  'title' => 'Total review count',
956
  'type' => 'number',
957
+ 'attr' => 'step="any"',
958
  'desc' => "Rating ratting value. <span class='required'>This is required if (Ratting value) is given</span>"
959
  ),
960
  'price' => array(
961
  'title' => 'Price',
962
  'type' => 'number',
963
+ 'attr' => 'step="any"',
964
  'desc' => "The lowest available price, including service charges and fees, of this type of ticket."
965
  ),
966
  'priceCurrency' => array(
1180
  'ratingValue' => array(
1181
  'title' => 'Rating value',
1182
  'type' => 'number',
1183
+ 'attr' => 'step="any"',
1184
  'desc' => "A numerical quality rating for the item."
1185
  ),
1186
  'bestRating' => array(
1187
  'title' => 'Best rating',
1188
  'type' => 'number',
1189
+ 'attr' => 'step="any"',
1190
  'desc' => "The highest value allowed in this rating system."
1191
  ),
1192
  'worstRating' => array(
1193
  'title' => 'Worst rating',
1194
  'type' => 'number',
1195
+ 'attr' => 'step="any"',
1196
  'desc' => "The lowest value allowed in this rating system. * Required if the rating system is not on a 5-point scale. If worstRating is omitted, 1 is assumed."
1197
  ),
1198
  'publisher' => array(
1252
  'ratingCount' => array(
1253
  'title' => 'Rating Count',
1254
  'type' => 'number',
1255
+ 'attr' => 'step="any"',
1256
  'required' => true,
1257
  'desc' => "The total number of ratings for the item on your site. <span class='required'>* At least one of ratingCount or reviewCount is required.</span>"
1258
  ),
1259
  'reviewCount' => array(
1260
  'title' => 'Review Count',
1261
  'type' => 'number',
1262
+ 'attr' => 'step="any"',
1263
  'required' => true,
1264
  'desc' => "Specifies the number of people who provided a review with or without an accompanying rating. At least one of ratingCount or reviewCount is required."
1265
  ),
1266
  'ratingValue' => array(
1267
  'title' => 'Rating Value',
1268
  'type' => 'number',
1269
+ 'attr' => 'step="any"',
1270
  'required' => true,
1271
  'desc' => "A numerical quality rating for the item."
1272
  ),
1273
  'ratingValue' => array(
1274
  'title' => 'Rating Value',
1275
+ 'attr' => 'step="any"',
1276
  'type' => 'number',
1277
  'required' => true,
1278
  'desc' => "A numerical quality rating for the item."
1280
  'bestRating' => array(
1281
  'title' => 'Best Rating',
1282
  'type' => 'number',
1283
+ 'attr' => 'step="any"',
1284
  'required' => true,
1285
  'desc' => "The highest value allowed in this rating system. <span class='required'>* Required if the rating system is not a 5-point scale.</span> If bestRating is omitted, 5 is assumed."
1286
  ),
1287
  'worstRating' => array(
1288
  'title' => 'Worst Rating',
1289
  'type' => 'number',
1290
+ 'attr' => 'step="any"',
1291
  'required' => true,
1292
  'desc' => "The lowest value allowed in this rating system. <span class='required'>* Required if the rating system is not a 5-point scale.</span> If worstRating is omitted, 1 is assumed."
1293
  )
1347
  'localBusiness' => array(
1348
  'title' => 'Local Business',
1349
  'fields' => array(
1350
+ 'active' => array(
1351
  'type' => 'checkbox'
1352
  ),
1353
+ 'name' => array(
1354
+ 'title' => 'Name',
1355
+ 'type' => 'text',
1356
  'required' => true
1357
  ),
1358
+ 'description' => array(
1359
  'title' => 'Description',
1360
  'type' => 'textarea',
1361
  ),
1362
+ 'image' => array(
1363
  'title' => 'Business Logo',
1364
  'type' => 'image',
1365
  'required' => true
1366
  ),
1367
+ 'priceRange' => array(
1368
+ 'title' => 'Price Range (Recommended)',
1369
+ 'type' => 'text',
1370
+ 'desc' => "The price range of the business, for example $$$."
1371
  ),
1372
  'addressLocality' => array(
1373
  'title' => 'Address locality',
1374
  'type' => 'text',
1375
+ 'desc' => 'City (i.e Kansas city)'
1376
  ),
1377
+ 'addressRegion' => array(
1378
  'title' => 'Address region',
1379
  'type' => 'text',
1380
+ 'desc' => 'State (i.e. MO)'
1381
  ),
1382
+ 'postalCode' => array(
1383
  'title' => 'Postal code',
1384
  'type' => 'text',
1385
  ),
1386
+ 'streetAddress' => array(
1387
  'title' => 'Street address',
1388
  'type' => 'text',
1389
  ),
1390
+ 'telephone' => array(
1391
  'title' => 'Telephone (Recommended)',
1392
  'type' => 'text',
1393
  )
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link:
4
  Tags: seo, schema, structured data, rich snippets, microdata, json-ld, search engine optimization, local seo, google, sitelinks, schema.org, microformat, serp, amp
5
  Requires at least: 3.5
6
  Tested up to: 4.9
7
- Stable tag: 2.3
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -93,6 +93,9 @@ You'll find the [FAQ on Kcseopro.com](http://kcseopro.com/).
93
 
94
  == Changelog ==
95
 
 
 
 
96
  = 2.3 =
97
  * Fix the conflict with Event Manager plugin
98
  * Add New schema generator at footer
4
  Tags: seo, schema, structured data, rich snippets, microdata, json-ld, search engine optimization, local seo, google, sitelinks, schema.org, microformat, serp, amp
5
  Requires at least: 3.5
6
  Tested up to: 4.9
7
+ Stable tag: 2.4.1
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
93
 
94
  == Changelog ==
95
 
96
+ = 2.4 =
97
+ * Delete data when delete your plugin (Fixed)
98
+
99
  = 2.3 =
100
  * Fix the conflict with Event Manager plugin
101
  * Add New schema generator at footer
wp-seo-structured-data-schema.php CHANGED
@@ -3,7 +3,7 @@
3
  *Plugin Name: WP SEO Structured Data Schema
4
  * Plugin URI: http://kcseopro.com/
5
  * Description: Comprehensive JSON-LD based Structured Data solution for WordPress for adding schema for organizations, businesses, blog posts, ratings & more.
6
- * Version: 2.3
7
  * Author: kcseopro
8
  * Author URI: http://kcseopro.com/
9
  * License: A "Slug" license name e.g. GPL2
@@ -18,7 +18,9 @@ if (!defined('JSON_PRETTY_PRINT'))
18
  if (!defined('JSON_UNESCAPED_UNICODE'))
19
  define('JSON_UNESCAPED_UNICODE', 256);
20
 
21
- define('KCSEO_WP_SCHEMA_VERSION', '2.3');
 
 
22
  define('KCSEO_WP_SCHEMA_SLUG', 'wp-seo-structured-data-schema');
23
  define('KCSEO_WP_SCHEMA_PATH', dirname(__FILE__));
24
  define('KCSEO_WP_SCHEMA_PLUGIN_ACTIVE_FILE_NAME', plugin_basename( __FILE__ ));
@@ -30,7 +32,7 @@ register_uninstall_hook( __FILE__, 'KCSEO_uninstall');
30
 
31
  function KCSEO_uninstall(){
32
  global $KcSeoWPSchema;
33
- $settings = get_option( $KcSeoWPSchema->options['settings'] );
34
  if(! empty( $settings['delete-data'])){
35
  $schemas = new KcSeoSchemaModel;
36
  $schemaFields = $schemas->schemaTypes();
3
  *Plugin Name: WP SEO Structured Data Schema
4
  * Plugin URI: http://kcseopro.com/
5
  * Description: Comprehensive JSON-LD based Structured Data solution for WordPress for adding schema for organizations, businesses, blog posts, ratings & more.
6
+ * Version: 2.4.1
7
  * Author: kcseopro
8
  * Author URI: http://kcseopro.com/
9
  * License: A "Slug" license name e.g. GPL2
18
  if (!defined('JSON_UNESCAPED_UNICODE'))
19
  define('JSON_UNESCAPED_UNICODE', 256);
20
 
21
+
22
+ $plugin_data = get_file_data( __FILE__, array( 'Version' => 'Version' ), false );
23
+ define( 'KCSEO_WP_SCHEMA_VERSION', $plugin_data['Version'] );
24
  define('KCSEO_WP_SCHEMA_SLUG', 'wp-seo-structured-data-schema');
25
  define('KCSEO_WP_SCHEMA_PATH', dirname(__FILE__));
26
  define('KCSEO_WP_SCHEMA_PLUGIN_ACTIVE_FILE_NAME', plugin_basename( __FILE__ ));
32
 
33
  function KCSEO_uninstall(){
34
  global $KcSeoWPSchema;
35
+ $settings = get_option( $KcSeoWPSchema->options['main_settings'] );
36
  if(! empty( $settings['delete-data'])){
37
  $schemas = new KcSeoSchemaModel;
38
  $schemaFields = $schemas->schemaTypes();