Всім привіт! Сьогодні на seo-ayak.com на численні прохання читачів я почну розбирати плагін Woocommerce.
Не люблю я плагіни, тим більше ті, що свої таблиці в БД створюють, але Woocommerce, звичайно, виключення, так як це не звичайний плагін, а цілий окремий движок, зі своїм кодексом.
Плагін дуже популярний і думаю цілком заслужено, але як у всіх двигунах в ньому є багато недоробок, які ми і будемо намагатися виправити.
У мене немає чинного інтернет-магазину на Woocommerce, але я його створив на локальному сервері ( як створити локальний сервер ) І тепер буду над ним знущатися собі на втіху.
Сьогодні, так би мовити, по гарячих слідах, я розповім як вивести окремі: title, description, keywords і h1 для категорій товарів 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))?>"> <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.
На цьому схожість закінчується. Йдемо далі.
Також, як у випадку зі стандартними категоріями 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 буде виводиться за замовчуванням, тобто з назви категорії.
Категорії 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 буде виведений за замовчуванням, тобто взятий з опису категорії.
/ * Висновок 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 для категорій товарів * / 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):
До зустрічі!
З повагою, Віталій Кирилов
Статті по темі:
Title, description, keywords і h1 для категорій (рубрик) WordPress
Картинки для категорій (рубрик) - зображення WordPress
Редактор для категорій (рубрик), міток і довільних таксономій
Шаблони для категорій WordPress. Як зробити каталог з рубрики
Категорії WordPress - терми і таксономії
wp_list_categories () - як виводити рубрики WordPress
Copyleft © 2017 . www.info-center.od.ua Информационный центр - Всегда в центре событий