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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
<?php
namespace TotalPoll\Decorators; ! defined( 'ABSPATH' ) && exit();
/** * Class StructuredData * @package TotalPoll\Decorators */ class StructuredData { /** * StructuredData constructor. */ public function __construct() { add_filter( 'totalpoll/filters/template/attributes/question/container', [ $this, 'question' ] ); add_filter( 'totalpoll/filters/template/attributes/question/content', [ $this, 'content' ] ); add_filter( 'totalpoll/filters/template/attributes/choice/container', [ $this, 'choice' ] ); add_filter( 'totalpoll/filters/template/attributes/choice/label', [ $this, 'content' ] ); add_filter( 'totalpoll/filters/template/content/choice', [ $this, 'votes' ], 10, 2 ); }
/** * Question schema. * * @param array $attributes * * @return array */ public function question( $attributes ) { $attributes['itemscope'] = ''; $attributes['itemtype'] = 'http://schema.org/Question';
return $attributes; }
/** * Choice schema. * * @param array $attributes * * @return array */ public function choice( $attributes ) { $attributes['itemscope'] = ''; $attributes['itemtype'] = 'http://schema.org/Answer';
return $attributes; }
/** * Content schema. * * @param array $attributes * * @return array */ public function content( $attributes ) { $attributes['itemprop'] = 'text';
return $attributes; }
/** * Votes schema. * * @param $content * * @return string */ public function votes( $content, $choice ) { $content .= TotalPoll( 'html.element', [ 'meta', [ 'itemprop' => 'upvoteCount', 'content' => $choice['votes'] ], ] );
return $content; } }
|