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
|
<?php
namespace Yoast\WP\SEO\Presenters\Twitter;
use Yoast\WP\SEO\Presentations\Indexable_Presentation; use Yoast\WP\SEO\Presenters\Abstract_Indexable_Tag_Presenter;
/** * Presenter class for the Twitter site tag. */ class Site_Presenter extends Abstract_Indexable_Tag_Presenter {
/** * The tag format including placeholders. * * @var string */ protected $tag_format = '<meta name="twitter:site" content="%s" />';
/** * Run the Twitter site through the `wpseo_twitter_site` filter. * * @return string The filtered Twitter site. */ public function get() { /** * Filter: 'wpseo_twitter_site' - Allow changing the Twitter site account as output in the Twitter card by Yoast SEO. * * @api string $twitter_site Twitter site account string. * * @param Indexable_Presentation $presentation The presentation of an indexable. */ $twitter_site = \apply_filters( 'wpseo_twitter_site', $this->presentation->twitter_site, $this->presentation ); $twitter_site = $this->get_twitter_id( $twitter_site );
if ( ! \is_string( $twitter_site ) || $twitter_site === '' ) { return ''; }
return '@' . $twitter_site; }
/** * Checks if the given id is actually an id or a url and if url, distills the id from it. * * Solves issues with filters returning urls and theme's/other plugins also adding a user meta * twitter field which expects url rather than an id (which is what we expect). * * @param string $id Twitter ID or url. * * @return string|bool Twitter ID or false if it failed to get a valid Twitter ID. */ private function get_twitter_id( $id ) { if ( \preg_match( '`([A-Za-z0-9_]{1,25})$`', $id, $match ) ) { return $match[1]; }
return false; } }
|