Мне нужно заменить существующий <meta name="description"...>
генерируется функцией wp_head () в header.php с пользовательским мета-описанием. Информация на странице не является обычным постом WordPress, взята из внешней БД.
Я смог добавить свою собственную мету, но старая тоже есть
function add_meta_tags()
{
global $data;
if(!is_null($data['metas']['page_meta_description']) )
{
echo '<meta name="description" content="'.$data['metas']['page_meta_description'].'">';
}
}
add_action('wp_head', 'add_meta_tags');
Есть ли способ:
— удалить мета-описание по умолчанию с действием или фильтром в
function.php? или же,
— заменить значение мета-описания как-то до того, как оно будет отображено?
Мета-тег Description обычно обрабатывается заголовком шаблона (header.php) или плагином, который добавляет описание на сайт (например, SEO-тег заголовка). Поскольку вы получаете дублирующее описание, вы должны проверить плагины, которые выводят тег описания.
Для других надоедливых мета-тегов и других вещей, помещаемых в заголовок, вы можете использовать функцию remove_action () в файле functions.php вашего шаблона, чтобы посмотреть эту документацию здесь: https://codex.wordpress.org/Function_Reference/remove_action
Я делаю нечто подобное для сайта WP, который я запускаю, и мне нужно было удалить каждый метатег, который идет в голову, и вот код, который у меня есть в нижней части моего файла functions.php, чтобы сделать это:
// Remove Meta Tags that are Unneeded
remove_action('wp_head','feed_links_extra', 3);
remove_action('wp_head','rsd_link');
remove_action('wp_head','feed_links', 2);
remove_action('wp_head','wlwmanifest_link');
remove_action('wp_head','index_rel_link');
remove_action('wp_head','parent_post_rel_link', 10, 0);
remove_action('wp_head','start_post_rel_link', 10, 0);
remove_action('wp_head','adjacent_posts_rel_link', 10, 0);
remove_action('wp_head','noindex');
remove_action('wp_head','wp_generator');
remove_action('wp_head','rel_canonical');
remove_action('wp_head', 'wp_shortlink_wp_head');
Очевидно, используйте только те, которые вам нужны! У меня были проблемы с поиском списка всех функций для мета-тегов, поэтому я хотел включить все те, которые я использовал.
Установите плагин Yoast, вы сможете генерировать метатеги, помещая его вручную, как вы хотите, чтобы показать на странице результатов поисковой системы.
function remove_meta_descriptions($html) {
$pattern = '/<meta name(.*)=(.*)"description"(.*)>/i';
$html = preg_replace($pattern, '', $html);
return $html;
}
function clean_meta_descriptions($html) {
ob_start('remove_meta_descriptions');
}
add_action('get_header', 'clean_meta_descriptions', 100);
add_action('wp_footer', function(){ ob_end_flush(); }, 100);