Title, description і h1 для категорій (рубрик) Woocommerce

  1. Мета-поля на сторінці редагування категорії Woocommerce
  2. Title для категорій товарів Woocommerce
  3. Тема h1 для категорій товарів Woocommerce
  4. Відокремлений description для категорій Woocommerce
  5. Keywords для категорій товарів Woocommerce

Всім привіт! Сьогодні на seo-ayak.com на численні прохання читачів я почну розбирати плагін Woocommerce.

Не люблю я плагіни, тим більше ті, що свої таблиці в БД створюють, але Woocommerce, звичайно, виключення, так як це не звичайний плагін, а цілий окремий движок, зі своїм кодексом.

Плагін дуже популярний і думаю цілком заслужено, але як у всіх двигунах в ньому є багато недоробок, які ми і будемо намагатися виправити.

У мене немає чинного інтернет-магазину на Woocommerce, але я його створив на локальному сервері ( як створити локальний сервер ) І тепер буду над ним знущатися собі на втіху.

Сьогодні, так би мовити, по гарячих слідах, я розповім як вивести окремі: title, description, keywords і h1 для категорій товарів Woocommerce. Поїхали!

Мета-поля на сторінці редагування категорії Woocommerce

Треба сказати, що в Woocommerce, також як і в самому WordPress, передбачено маса різних хуков, за допомогою яких, не чіпаючи код плагіна, можна впливати на його функціонал.

Для виведення мета-полів на сторінці редагування категорій товарів ми будемо використовувати хук product_cat_edit_form_fields.

Відкриваємо для редагування файл functions.php, що знаходиться в папці з темою і вставляємо таку функцію.

/ * Мета-поля для категорій товарів * / add_action ( "product_cat_edit_form_fields", 'mayak_meta_product_cat'); function mayak_meta_product_cat ($ term) {?> <tr class = "form-field"> <th scope = "row" valign = "top"> <label> Тема (title) </ label> </ th> <td> <input type = "text" name = "mayak [title]" value = "<? php echo esc_attr (get_term_meta ($ term-> term_id, 'title', 1))?>"> <br /> <p class = "description"> Не більше 60 знаків, враховуючи пробіли </ p> </ td> </ tr> <tr class = "form-field"> <th scope = "row" valign = "top"> <label> Короткий опис (description) </ label> </ th> <td> <input type = "text" name = "mayak [description]" value = "<? php echo esc_attr (get_term_meta ($ term-> term_id, 'description ', 1))?> "> <br /> <p class =" description "> Короткий опис (description) </ p> </ td> </ tr> <tr class =" form-field "> <th scope = "row" valign = "top"> <label> Тема h1 </ label> </ th> <td> <input type = "text" name = "mayak [h1]" value = "<? php echo esc_attr (get_term_meta ($ term-> term_id, 'h1', 1))?> "> <br /> <p class =" description "> Заголовок сторінки </ p> </ Td> </ tr> <tr class = "form-field"> <th scope = "row" valign = "top"> <label> Ключові слова </ label> </ th> <td> <input type = "text" name = "mayak [keywords]" value = "<? php echo esc_attr (get_term_meta ($ term-> term_id, 'keywords', 1))?&gt;"> <br /> <p class = "description "> Ключові слова (keywords) </ p> </ td> </ tr> <? php}

Якщо хто робив мета-поля для звичайних категорій WordPress по моїй статті , То напевно звернули увагу, що функція відрізняється тільки назвою і хуком, тому другу функцію можна не створювати, а просто підключити хук product_cat_edit_form_fields.

У підсумку на сторінці редагування категорій товарів має з'явитися чотири нових поля:

Тепер нам треба зберегти дані в БД. Для це вставляємо ще одну функцію:

/ * Збереження даних в БД * / add_action ( 'edited_product_cat', 'mayak_save_meta_product_cat'); add_action ( 'create_product_cat', 'mayak_save_meta_product_cat'); function mayak_save_meta_product_cat ($ term_id) {if (! isset ($ _ POST [ 'mayak'])) return; $ Mayak = array_map ( 'trim', $ _POST [ 'mayak']); foreach ($ mayak as $ key => $ value) {if (empty ($ value)) {delete_term_meta ($ term_id, $ key); continue; } Update_term_meta ($ term_id, $ key, $ value); } Return $ term_id; }

Ця функція теж відрізняється тільки назвою і хукамі, тут також можна не створювати зайвого, а просто підключити хукі edited_product_cat і create_product_cat.

На цьому схожість закінчується. Йдемо далі.

Title для категорій товарів Woocommerce

Також, як у випадку зі стандартними категоріями WordPress, ми просто підмінимо title Woocommerce на свій.

У Woocommerce, втім як і в WordPress, для виведення title на сторінках категорій товарів використовується функція single_term_title (), в якій передбачено однойменний хук single_term_title, його-то ми і будемо використовувати для виведення свого title.

Вставляємо нижче в файл functions.php:

/ * Висновок title для категорій товарів * / add_filter ( 'single_term_title', 'mayak_filter_single_cat_title', 10, 1); add_filter ( 'single_term_title', 'mayak_poduct_cat_title', 10, 1); function mayak_filter_single_cat_title () {$ pci = get_queried_object () -> term_id; return get_term_meta ($ pci, 'title', true); } Function mayak_poduct_cat_title ($ pct) {if (empty ($ pct)) {$ pct = get_queried_object () -> name; } Return $ pct; }

Якщо поле title з якихось причин виявиться незаповненим, то заголовок title буде виводиться за замовчуванням, тобто з назви категорії.

Тема h1 для категорій товарів Woocommerce

Категорії Woocommerce скривджених нітрохи не менше стандартних категорій, може за винятком можливості виведення зображення, мало того, що такі сторінки складно просувати, це ще неправильно з комерційної точки зору.

Зрештою h1 призначений більше для користувачів і заголовок цілої рубрики повинен відрізнятися від назви в меню і давати біліше розгорнуте уявлення про сторінку.

Сьогодні ми виправимо цю ситуацію. функція:

if (strpos ($ _ SERVER [ 'SERVER_NAME']. $ _SERVER [ 'REQUEST_URI'], '/ product-category /')) add_filter ( 'woocommerce_show_page_title', 'mayak_woocommerce_product_cat_h1', 10, 2); function mayak_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 mayak_woocommerce_product_cat_h1 () {return mayak_product_cat_h1 ($ pch); }

Тут також передбачено виведення заголовка h1 з назви категорії товарів в випадки, якщо поле h1 з якихось причин виявиться порожнім.

У Woocommerce є хук woocommerce_show_page_title, який спрацьовує перед виведенням заголовка з назви на екран і якщо це хук задіяний, то заголовок з назви вже братися не буде, а буде виводиться наш h1.

Дуже зручний хук, в збірці WordPress такого немає.

У функції для h1 я задав css-класи, взяті з самого плагіна, але якщо є необхідність, можна вписати свої.

Відокремлений description для категорій Woocommerce

Тут я не буду вдаватися в подробиці, скажу лише, що, якщо поле «Короткий опис» не буде заповнено, то description буде виведений за замовчуванням, тобто взятий з опису категорії.

/ * Висновок description для категорій товарів * / add_action ( 'wp_head', 'mayak_description_product_cat', 1, 1); function mayak_description_product_cat () {if (is_product_category ()) {$ pcd = get_term_meta (get_queried_object () -> term_id, 'description', true); if (! empty ($ pcd)) {$ meta = '<meta name = "description" content = "'. $ pcd. '" />'. "\ n"; } Else {$ pcd = wp_filter_nohtml_kses (substr (category_description (), 0, 280)); $ Meta = '<meta name = "description" content = "'. $ Pcd. '" />'. "\ N"; } Echo $ meta; }}

У нас залишилося вивести ключові слова. Хтось може сказати, що поле keywords можна і не робити і частково вони мають рацію, але тільки почасти, так як Яндекс і інші менш значні пошуковики можливо, повторюю, можливо, враховують ключові слова, якщо вони складені за правилами.

Тому і нам не варто нехтувати keywords.

Keywords для категорій товарів Woocommerce

Функція проста і розписувати тут нічого:

/ * Висновок keywords для категорій товарів * / add_action ( 'wp_head', 'mayak_keywords_product_cat', 1, 1); function mayak_keywords_product_cat () {if (is_product_category ()) {$ pck = get_term_meta (get_queried_object () -> term_id, 'keywords', true); $ Aut = '<meta name = "keywords" content = "'. $ Pck. '">'. "\ N"; } Echo $ aut; }

На цьому у мене все. Якщо щось не виходить, пишіть в коментарях, постараюся допомогти і підписуйтесь на оновлення блогу, буде цікаво!

доповнення

Після впровадження вищеописаного функціоналу, багато веб-майстри нарікали, що на стартовій сторінці магазину в заголовок h1 виводитися слово «Product» (за замовчуванням «Магазин»).
Причина: просто відключається переклад.
Я написав функцію, в тіло якої можна вписати будь-який текст заголовка (Рядок №3):

add_filter ( 'woocommerce_show_page_title', 'mayak_product_shop_h1', 10, 2); function mayak_product_shop_h1 () {$ product = "Сюди можна вписати будь-який текст"; if (strpos ($ _ SERVER [ 'SERVER_NAME']. $ _SERVER [ 'REQUEST_URI'], '/ shop')) echo '<h1 class = "woocommerce-products-header__title page-title">'. $ Product. '</ H1>'; }

До зустрічі!

З повагою, Віталій Кирилов

Статті по темі:

Title, description, keywords і h1 для категорій (рубрик) WordPress
Картинки для категорій (рубрик) - зображення WordPress
Редактор для категорій (рубрик), міток і довільних таксономій
Шаблони для категорій WordPress. Як зробити каталог з рубрики
Категорії WordPress - терми і таксономії
wp_list_categories () - як виводити рубрики WordPress

Мета-поля для категорій товарів * / add_action ( "product_cat_edit_form_fields", 'mayak_meta_product_cat'); function mayak_meta_product_cat ($ term) {?
Php echo esc_attr (get_term_meta ($ term-> term_id, 'title', 1))?
Php echo esc_attr (get_term_meta ($ term-> term_id, 'description ', 1))?
Php echo esc_attr (get_term_meta ($ term-> term_id, 'h1', 1))?
Php echo esc_attr (get_term_meta ($ term-> term_id, 'keywords', 1))?
Gt;"> <br /> <p class = "description "> Ключові слова (keywords) </ p> </ td> </ tr> <?