-
Notifications
You must be signed in to change notification settings - Fork 0
/
schema-presenter.php
62 lines (52 loc) · 1.4 KB
/
schema-presenter.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
namespace Yoast\WP\SEO\Presenters;
use WPSEO_Utils;
/**
* Presenter class for the schema object.
*/
class Schema_Presenter extends Abstract_Indexable_Presenter {
/**
* The tag key name.
*
* @var string
*/
protected $key = 'schema';
/**
* Returns the schema output.
*
* @return string The schema tag.
*/
public function present() {
$deprecated_data = [
'_deprecated' => 'Please use the "wpseo_schema_*" filters to extend the Yoast SEO schema data - see the WPSEO_Schema class.',
];
/**
* Filter: 'wpseo_json_ld_output' - Allows disabling Yoast's schema output entirely.
*
* @api mixed If false or an empty array is returned, disable our output.
*/
$return = \apply_filters( 'wpseo_json_ld_output', $deprecated_data, '' );
if ( $return === [] || $return === false ) {
return '';
}
/**
* Action: 'wpseo_json_ld' - Output Schema before the main schema from Yoast SEO is output.
*/
\do_action( 'wpseo_json_ld' );
$schema = $this->get();
if ( \is_array( $schema ) ) {
$output = WPSEO_Utils::format_json_encode( $schema );
$output = \str_replace( "\n", \PHP_EOL . "\t", $output );
return '<script type="application/ld+json" class="yoast-schema-graph">' . $output . '</script>';
}
return '';
}
/**
* Gets the raw value of a presentation.
*
* @return array The raw value.
*/
public function get() {
return $this->presentation->schema;
}
}