По умолчанию, на странице категории выводится заголовком H1 название самой категории. Но для SEO это не правильно. Когда мы работаем с коммерческими запросами и необходимо добавить фразовое вхождение, лучше всего настроить вывод своих, кастомных заголовков H1.
Для вывода своих, произвольных, кастомных заголовков категорий H1, в файле темы function.php необходимо добавить код:
/**Вывод своего заголовка у категорий товаров Woocommerce часть кода 1**/
add_action("product_cat_edit_form_fields", 'itcom_meta_product_cat');
function itcom_meta_product_cat($term){
?>
<tr class="form-field">
<th scope="row" valign="top"><label>Заголовок h1</label></th>
<td>
<input type="text" name="itcom[h1]" value="<?php echo esc_attr( get_term_meta( $term->term_id, 'h1', 1 ) ) ?>"><br />
<p class="description">Заголовок страницы</p>
</td>
</tr>
<?php
}
/**Вывод своего заголовка у категорий товаров Woocommerce часть кода 1**/
/**Вывод своего заголовка у категорий товаров Woocommerce часть кода 2**/
add_action('edited_product_cat', 'itcom_save_meta_product_cat');
add_action('create_product_cat', 'itcom_save_meta_product_cat');
function itcom_save_meta_product_cat($term_id){
if (!isset($_POST['itcom']))
return;
$itcom = array_map('trim', $_POST['itcom']);
foreach($itcom as $key => $value){
if(empty($value)){
delete_term_meta($term_id, $key);
continue;
}
update_term_meta($term_id, $key, $value);
}
return $term_id;
}
/**Вывод своего заголовка у категорий товаров Woocommerce часть кода 2**/
/**Вывод своего заголовка у категорий товаров Woocommerce часть кода 3**/
if(strpos($_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'], '/product-category/'))
add_filter ( 'woocommerce_show_page_title' , 'itcom_woocommerce_product_cat_h1' , 10 , 2 );
function itcom_product_cat_h1(){
$pch = get_term_meta (get_queried_object()->term_id, 'h1', true);
echo '<h1 class="woocommerce-products-header__title page-title">'.$pch.'</h1>';
if(empty($pch)){
echo '<h1 class="woocommerce-products-header__title page-title">'.get_queried_object()->name.'</h1>';
}
}
function itcom_woocommerce_product_cat_h1(){
return itcom_product_cat_h1($pch);
}
/**Вывод своего заголовка у категорий товаров Woocommerce часть кода 3**/
Данный код добавит в настройки каждой категории дополнительное поле “Заголовок h1”.
4 ответа
Спасибо. Всё получилось! Это действительно работает и очень полезно для SEO.
Все хорошо, проблема лишь в том что тег H1 в самом коде задевается, либо первый пустой либо второй. Возможно ли как то решить этот нюанс?
Решил данный косяк вот таким изменением в нижней части кода
echo ”;
echo $pch;
if(empty($pch)){
echo get_queried_object()->name;
}
echo ”;
}
Здравствуйте, Денис!
Отличное решение важной сео-задачи, из всей информации, что есть по этой тематике в интернете мне помогло оно, хотя и возник вопрос:
В популярной теме Kadence заголовок выводится в блоке:
Заголовок
При добавлении вашего кода он остается на своем месте (тема позволяет отключить его вывод).
А новый, кастомный, расширенный H1 выводится ниже, на странице.
Возможно это исправить и вывести расширенный вместо дефолтного?