CrewCut
@CrewCut
Коплю силы на переезд в тропики

Почему в Wordperss при изменении тайтла через функцию слетает код у незарегистрированных юзеров?

Всем привет!

Столкнулся с очень странным для меня багом - через файл функций, меняю заголовки и метатеги на нужные мне. Все работает отлично, выводится как надо, но вот странность - это работает только если я залогинен на сайте. Если открыть сайт в другом браузере или выйдти из админки - view-source:volga.vashs.com/volgann/barabani/barabani-hp/ вот такая каша, при этом заголовок стандартный, не измененный.

В чем может быть дело? Ниже код функции:
add_action('template_redirect', 'before_header', 0);
add_action('wp_head', 'after_header', 900);
function before_header (){
	if(is_product()){
		ob_start('change_title_tag');
	}
	elseif(is_product_category()) { 
		ob_start('change_title_tag');
	}
}
function change_title_tag($head) { 
	if(is_product()){ 
		$title = get_the_title();  
		$artsku = get_post_meta( get_the_ID(), '_sku', true); 
		return eregi_replace('<title>[^<]*</title>', '<title>Купить '.$title.', '.$artsku.' : отзывы, фото, цена</title>', $head);
	} 
	elseif(is_product_category()) {  
		$term_id = get_queried_object()->term_id;;
		$taxonomy = 'product_cat';
		$term = get_term( $term_id, $taxonomy );
		$name = $term->name;
			$term_par = get_term( $term->parent, $taxonomy ); // данные родительской категории
			$name_par = $term_par->name; // получаем название родительской категории
		return eregi_replace('<title>[^<]*</title>', '<title>Купить '.$name_par.' '.$name.': отзывы, фото, цена</title>', $head);
	}   
}
function after_header() {
	if(is_product()){
		ob_end_flush();
	}
	elseif(is_product_category()) { 
		ob_start('change_title_tag');
	}
}
add_action("wp_head", "wp_head_extra_code", 1);
 
function wp_head_extra_code() {
	if(is_product()){
		$title = get_the_title();  
		$artsku = get_post_meta( get_the_ID(), '_sku', true);
		$rpice = get_post_meta( get_the_ID(), '_regular_price', true); 
		echo '<meta name="description" content="'.$title.' за '.$rpice.' рублей. Покупайте с выгодой - '.$title.' в интернет-магазине ГК Волга. Артикул: '.$artsku.'." />';
		echo '<meta name="keywords" content="'.$title.', артикул '.$artsku.'" />';
	}
	elseif(is_product_category()) {    
		$term_id = get_queried_object()->term_id; // ID нынешней категории
		$taxonomy = 'product_cat'; // таксономия категорий товаров
		$term = get_term( $term_id, $taxonomy ); // данные нынешней категории
		$name = $term->name; // получаем название нынешней категории
			$term_par = get_term( $term->parent, $taxonomy ); // данные родительской категории
			$name_par = $term_par->name; // получаем название родительской категории
		echo '<meta name="description" content="'.$name_par.' '.$name.' покупайте с выгодой - '.$name_par.' '.$name.' в интернет-магазине ГК Волга." />';
		echo '<meta name="keywords" content="'.$name_par.' '.$name.'" />';
	}
}
  • Вопрос задан
  • 214 просмотров
Решения вопроса 1
Mike77
@Mike77
lamp sf2 yii разработчик
попробуй без буфера это реализовать
https://codex.wordpress.org/Function_Reference/wp_title
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы