Как правильно убрать завершающий слеш и изменить атрибуты у мета тега robots в WordPress?
При проверке валидатором W3C получаю info-предупреждение о том, что мета тег robots имеет завершающий слеш. Как с помощью functions.php триммить слеш?
<meta name='robots' content='index, follow, noodp, noydir' />
В functions.php имею такое:
/* Direktiva robots */
function wporg_wp_robots_add_follow( $robots ) {
unset( $robots['max-image-preview'] );
$robots['index'] = true;
$robots['follow'] = true;
$robots['noodp'] = true;
$robots['noydir'] = true;
return $robots;
}
add_filter( 'wp_robots', 'wporg_wp_robots_add_follow' );
Код удаляет max-image-preview:large в content, который WordPress стал вставлять по дефолту. И добавляет index, follow, noodp, noydir атрибуты.
Но я заметил, если через админку выставить чекбокс "Попросить поисковые системы не индексировать сайт, то я получу в HTML-коде следующее:
<meta name='robots' content='noindex, nofollow, index, follow, noodp, noydir' />
Т.е. будет и index, и noindex. Как правильно добавлять атрибуты, чтобы не было противоречий у админки и funtions.php? И при этом триммить конечный слеш.
Ответы (1 шт):
В фильтр передается массив, и надо его проанализировать:
/**
* Robots filter.
*
* @param array $robots Robots.
*
* @return array
*/
function wporg_wp_robots_add_follow( $robots ) {
unset( $robots['max-image-preview'] );
if ( ! ( isset( $robots['noindex'] ) && $robots['noindex'] ) ) {
$robots['index'] = true;
}
if ( ! ( isset( $robots['nofollow'] ) && $robots['nofollow'] ) ) {
$robots['follow'] = true;
}
$robots['noodp'] = true;
$robots['noydir'] = true;
return $robots;
}
add_filter( 'wp_robots', 'wporg_wp_robots_add_follow' );
Про закрывающий слеш забудьте - не надо заниматься ерундой. Он вообще ни на что не влияет.