хочу удалить meta-тег роботс для поста
А откуда он взялся? По умолчанию же нет?
например в WP в настройках задали или в каком-нибудь All in One SeoPack выставили. А вот я для определенной категории страниц плагином хочу удалять его.
Можно отменить вывод тега теми же способами, какими он добавляется, скопировав подобный фрагмент в functions.php
активной темы::
function strip_robots() {
global $aioseop_options;
$aioseop_options['aiosp_category_noindex'] = 0;
$aioseop_options['aiosp_archive_noindex'] = 0;
$aioseop_options['aiosp_tags_noindex'] = 0;
remove_action('wp_head', 'noindex', 1);
}
add_action('init', 'strip_robots');
В крайнем случае можно воспользоваться буферизацией вывода:
function strip_robots_ob_start() {
ob_start();
}
add_action('get_header', 'strip_robots_ob_start');
function strip_robots_ob_end_clean() {
$wp_head = ob_get_contents();
ob_end_clean();
echo preg_replace('#<meta name=[\'"]robots[\'"].*?>#', '', $wp_head) ;
}
add_action('wp_head', 'strip_robots_ob_end_clean', 20);
а что если железно этот мета-тег прописан в header.php, а убрать надо скажем плагином ?
Второй вариант (с буферизацией вывода). Код можно скопировать и в плагин.
Второй вариант (с буферизацией вывода). Код можно скопировать и в плагин.
второй вариант с буферизацией не подойдет, если в header.php железно прописан <meta name='robots' ... />
Подойдёт, если «повесить» вызов strip_robots_ob_start()
не на wp_head
, а на чуть более раннее действие — например, get_header
. Обновил фрагмент.