• Добрый вечер.
    У меня такая проблема, — хочу удалить meta-тег роботс для поста, а именно

    <meta name='robots' ... />
    Собственно, в обычном стоковом варианте, я мог бы как с помощью строковых функций сделать, так и с помощью регулярок, а тут не знаю как запарсить. Может вообще есть другие варианты по этому поводу менее емкие?
    Делаю я это с плагина все. Или как вариант можно захватить этот кусок <head> … </head> где эти мета теги находятся и обработать их при помощи регулярки? Только вот как.
    Если кто знает, отпишитесь.
    Заранее благодарен.

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    хочу удалить meta-тег роботс для поста

    А откуда он взялся? По умолчанию же нет?

    например в WP в настройках задали или в каком-нибудь All in One SeoPack выставили. А вот я для определенной категории страниц плагином хочу удалять его.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Можно отменить вывод тега теми же способами, какими он добавляется, скопировав подобный фрагмент в 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, а убрать надо скажем плагином ?

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Второй вариант (с буферизацией вывода). Код можно скопировать и в плагин.

    Второй вариант (с буферизацией вывода). Код можно скопировать и в плагин.

    второй вариант с буферизацией не подойдет, если в header.php железно прописан <meta name='robots' ... />

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Подойдёт, если «повесить» вызов strip_robots_ob_start() не на wp_head, а на чуть более раннее действие — например, get_header. Обновил фрагмент.

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • Тема «Удаление тегов robots.» закрыта для новых ответов.