forked from WordPress/wordpress-develop
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrobots.php
More file actions
160 lines (134 loc) · 4.12 KB
/
robots.php
File metadata and controls
160 lines (134 loc) · 4.12 KB
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<?php
/**
* Robots functions tests.
*
* @package WordPress
*/
/**
* Tests for robots template functions and filters.
*
* @group robots
*/
class Tests_Robots extends WP_UnitTestCase {
public function setUp() {
parent::setUp();
remove_all_filters( 'wp_robots' );
}
/**
* @ticket 51511
*/
public function test_wp_robots_renders_when_relevant() {
// Do not render robots meta tag when there are no directives.
$output = get_echo( 'wp_robots' );
$this->assertEmpty( $output );
// Render robots meta tag with noindex.
add_filter( 'wp_robots', array( $this, 'add_noindex_directive' ) );
$output = get_echo( 'wp_robots' );
$this->assertSame( "<meta name='robots' content='noindex' />\n", $output );
// Do not render robots meta tag when there are only false-y directives.
add_filter( 'wp_robots', array( $this, 'remove_noindex_directive' ), 11 );
$output = get_echo( 'wp_robots' );
$this->assertEmpty( $output );
}
/**
* @ticket 51511
*/
public function test_wp_robots_parses_directives_correctly() {
add_filter(
'wp_robots',
function( array $robots ) {
// Directives that should have values must use strings.
$robots['directive-with-value'] = 'yes';
$robots['directive-with-numeric-value'] = '1';
// Any non-string value will be evaluated as boolean.
// False-y directives will not be included.
$robots['directive-active-boolean'] = true;
$robots['directive-inactive-boolean'] = false;
$robots['directive-active-integer'] = 1;
$robots['directive-inactive-integer'] = 0;
return $robots;
}
);
$expected_directives_string = implode(
', ',
array(
'directive-with-value:yes',
'directive-with-numeric-value:1',
'directive-active-boolean',
'directive-active-integer',
)
);
$output = get_echo( 'wp_robots' );
$this->assertStringContainsString( "'{$expected_directives_string}'", $output );
}
/**
* @ticket 51511
*/
public function test_wp_robots_noindex() {
add_filter( 'wp_robots', 'wp_robots_noindex' );
update_option( 'blog_public', '1' );
$output = get_echo( 'wp_robots' );
$this->assertEmpty( $output );
update_option( 'blog_public', '0' );
$output = get_echo( 'wp_robots' );
$this->assertStringContainsString( "'noindex, nofollow'", $output );
}
/**
* @ticket 51511
*/
public function test_wp_robots_no_robots() {
add_filter( 'wp_robots', 'wp_robots_no_robots' );
update_option( 'blog_public', '1' );
$output = get_echo( 'wp_robots' );
$this->assertStringContainsString( "'noindex, follow'", $output );
update_option( 'blog_public', '0' );
$output = get_echo( 'wp_robots' );
$this->assertStringContainsString( "'noindex, nofollow'", $output );
}
/**
* @ticket 51511
*/
public function test_wp_robots_sensitive_page() {
add_filter( 'wp_robots', 'wp_robots_sensitive_page' );
$output = get_echo( 'wp_robots' );
$this->assertStringContainsString( "'noindex, noarchive'", $output );
}
/**
* @ticket 51511
*/
public function test_wp_robots_max_image_preview_large() {
add_filter( 'wp_robots', 'wp_robots_max_image_preview_large' );
update_option( 'blog_public', '1' );
$output = get_echo( 'wp_robots' );
$this->assertStringContainsString( "'max-image-preview:large'", $output );
update_option( 'blog_public', '0' );
$output = get_echo( 'wp_robots' );
$this->assertEmpty( $output );
}
/**
* @ticket 52457
*/
public function test_wp_robots_search_page() {
add_filter( 'wp_robots', 'wp_robots_noindex_search' );
$this->go_to( home_url( '?s=ticket+52457+core.trac.wordpress.org' ) );
$output = get_echo( 'wp_robots' );
$this->assertStringContainsString( 'noindex', $output );
}
/**
* @ticket 52457
*/
public function test_wp_robots_non_search_page() {
add_filter( 'wp_robots', 'wp_robots_noindex_search' );
$this->go_to( home_url() );
$output = get_echo( 'wp_robots' );
$this->assertStringNotContainsString( 'noindex', $output );
}
public function add_noindex_directive( array $robots ) {
$robots['noindex'] = true;
return $robots;
}
public function remove_noindex_directive( array $robots ) {
$robots['noindex'] = false;
return $robots;
}
}