Нужна помощь с доп. полями

У меня установлен плагин All In One SEO Pack для заполнения Title и Description каждого поста.

С целью задания для рубрик своих Title, Description, Keywords с помощью плагина Advanced Custom Fields были созданы соответствующие доп. поля (см. скрин).

И потом в header.php был добавлен код:

<?php
    function head_replace($buffer) {
        if ( is_category() ) { // если это шаблон рубрики
            // Формируем ID рубрики
            $cat_id = 'category_'.the_category_ID(false);
            
            // Получаем значения SEO полей по их именам
            // Если вы по другому назвали поля, замените первые параметры get_field
            $seo_title = get_field('my_seo_title', $cat_id);
            $seo_description = get_field('my_seo_description', $cat_id);
            $seo_keywords = get_field('my_seo_keywords', $cat_id);
            
            if ( !empty($seo_keywords) ) { // если поле seo keywords заполнено
                // удаляем старый keywords, если он есть
                $buffer = preg_replace('#<meta[^>]+["\']keywords["\'][^>]*>#si', '', $buffer);
                // вставляем новый
                $buffer = '<meta name="keywords" content="'.$seo_keywords.'" />'."\r\n" . $buffer;
            }
            
            if ( !empty($seo_description) ) { // если поле seo description заполнено
                // удаляем старый description, если он есть
                $buffer = preg_replace('#<meta[^>]+["\']description["\'][^>]*>#si', '', $buffer);
                // вставляем новый
                $buffer = '<meta name="description" content="'.$seo_description.'" />'."\r\n" . $buffer;
            }
            
            if ( !empty($seo_title) ) { // если поле seo title заполнено
                // удаляем старый title, если он есть
                $buffer = preg_replace('#<title.+?/title>#si', '', $buffer);
                // вставляем новый
                $buffer = '<title>'.$seo_title.'</title>'."\r\n" . $buffer;
            }
        }
        
        return $buffer;
    }
    ob_start('head_replace');
?>

А перед </head> вставьте такой код:
<?php ob_end_flush(); ?>

Но почему то в исходном коде все равно отображается по два Title и Description. 🙁 Не могу понять почему код не удаляет лишний Title и Description. Прошу помощи. Спасибо

Anonymous
Отправить
Ответ на: