
🔖 Jak włączyć tagi na stronach WordPress
Strony WordPress nie obsługują tagów od razu po instalacji i jest to irytujące dokładnie do momentu, gdy zrozumie się, dlaczego tak to zaprojektowano. Strona w WordPress to technicznie niestandardowy typ wpisu, do którego taksonomia post_tag po prostu nie jest przypisana. Deweloperzy rdzenia pozostawili tagi tylko dla postów, uznając strony za treść statyczną.
W praktyce jednak to ograniczenie obchodzi się w pięć minut. Dwa sposoby: linia kodu w functions.php lub mikrowtyczka, którą można włączać i wyłączać bez edycji motywu. Poniżej obie opcje z wyjaśnieniem, co dokładnie dzieje się pod maską.
💡 Szybki przegląd:
Rejestrujemy taksonomię
post_tagdla typu wpisupage, jedna funkcjaregister_taxonomy_for_object_typeDodajemy obsługę tagów w archiwach przez hook
pre_get_posts, aby strony pojawiały się w wynikach wyszukiwania według taguKod działa dla dowolnych niestandardowych typów wpisów, wystarczy powtórzyć wywołanie z odpowiednią nazwą typu
Wszystko można zamknąć w osobnej wtyczce w minutę: plik → nagłówek wtyczki → kod → aktywacja
Po co tagi na stronach
Tagi to nie tylko chmura w sidebarze. To oś nawigacyjna, która łączy rozproszone strony w grupy tematyczne szybciej niż kategorie czy menu.
Strony WordPress często się rozrastają: kontakt, polityka prywatności, regulamin, landingi usług, portfolio, dokumentacja. Bez tagów powiązania między nimi opierają się wyłącznie na ręcznych linkach w tekście. Z tagami jedna strona „Dostawa" automatycznie trafia do grupy „logistyka" obok strony „Zwroty", a odwiedzający klika tag i widzi wszystkie powiązane treści.
Dla SEO tagi na stronach zapewniają dodatkowe linkowanie wewnętrzne i obniżają współczynnik odrzuceń: użytkownik nie opuszcza serwisu po pierwszej stronie, tylko zagłębia się w tematyczny zestaw. Ponadto tagi trafiają do mapy witryny, a wyszukiwarka lepiej rozumie strukturę.
Sposób 1: Kod w functions.php
Najprostsza ścieżka: dodać snippet do pliku functions.php aktywnego motywu. Otwórz wp-content/themes/TWÓJ_MOTYW/functions.php i wstaw kod przed zamykającym ?> lub na samym końcu pliku:
1 /** 2 * Добавляем поддержку тегов на страницы WordPress. 3 * Код — в functions.php дочерней темы или через плагин Code Snippets. 4 */ 5 function sdstudio_add_tags_to_pages() { 6 register_taxonomy_for_object_type( 'post_tag', 'page' ); 7 } 8 add_action( 'init', 'sdstudio_add_tags_to_pages' ); 9 10 /** 11 * Включаем страницы в архивные запросы по тегам. 12 * Без этого страницы не появятся на /tag/название-тега/ 13 */ 14 function sdstudio_pages_in_tag_archives( $wp_query ) { 15 if ( $wp_query->get( 'tag' ) ) { 16 $wp_query->set( 'post_type', 'any' ); 17 } 18 } 19 add_action( 'pre_get_posts', 'sdstudio_pages_in_tag_archives' );
Co tu się dzieje. Funkcja register_taxonomy_for_object_type() wiąże istniejącą już taksonomię post_tag z typem wpisu page. To rdzenna funkcja WordPressa, dokumentacja na developer.wordpress.org. Nie tworzy ona nowej taksonomii, a jedynie dodaje powiązanie „strony → tagi".
Hook pre_get_posts modyfikuje zapytanie SQL przed jego wykonaniem. Gdy WordPress buduje stronę archiwum tagu (/tag/название/), domyślnie szuka tylko wpisów typu post. Linia $wp_query->set( 'post_type', 'any' ) rozszerza wyniki na wszystkie typy: strony, posty, typy niestandardowe.
Po wstawieniu kodu proszę wejść na dowolną stronę, z boku pojawi się blok „Tagi" tak jak w zwykłych wpisach. Działa od razu, nie trzeba czyścić cache.
Adaptacja do niestandardowych typów wpisów
Jeśli mają Państwo niestandardowe typy wpisów (CPT), portfolio, referencje, produkty i one również potrzebują tagów, proszę dodać tyle samo wywołań register_taxonomy_for_object_type() wewnątrz funkcji init:
1 register_taxonomy_for_object_type( 'post_tag', 'portfolio' ); 2 register_taxonomy_for_object_type( 'post_tag', 'testimonials' );
Nazwa CPT jako drugi argument, ta sama, którą podano podczas rejestracji typu przez register_post_type(). Nie trzeba nic dodatkowo zmieniać w pre_get_posts: 'any' już obejmuje wszystkie zarejestrowane typy.
Sposób 2: Osobna wtyczka
Edytowanie functions.php bezpośrednio to działające rozwiązanie, ale kruche. Zmiana motywu, kod znika, tagi ze stron znikają. Dla osób prowadzących wiele witryn lub często zmieniających motywy bezpieczniej jest wynieść snippet do osobnej wtyczki.
Proszę utworzyć plik wp-content/plugins/sdstudio-tags-for-pages.php z następującą zawartością:
1 <?php 2 /** 3 * Plugin Name: Tags for Pages 4 * Description: Enables post tags on WordPress pages and custom post types 5 * Version: 1.0 6 * Author: SDStudio 7 * License: GPL-2.0+ 8 */ 9 10 // Прямой доступ — запрещён 11 if ( ! defined( 'ABSPATH' ) ) { 12 exit; 13 } 14 15 // Теги → страницы 16 function sdstudio_tags_for_pages() { 17 register_taxonomy_for_object_type( 'post_tag', 'page' ); 18 } 19 add_action( 'init', 'sdstudio_tags_for_pages' ); 20 21 // Страницы → архив тегов 22 function sdstudio_pages_in_tag_queries( $wp_query ) { 23 if ( ! is_admin() && $wp_query->is_main_query() && $wp_query->get( 'tag' ) ) { 24 $wp_query->set( 'post_type', 'any' ); 25 } 26 } 27 add_action( 'pre_get_posts', 'sdstudio_pages_in_tag_queries' );
Różnica w stosunku do pierwszego sposobu: sprawdzenie ! is_admin() && $wp_query->is_main_query(). Gwarantuje ono, że zapytania w panelu administracyjnym nie są naruszone: pre_get_posts działa wszędzie, w tym na liście stron w konsoli, a bez tego sprawdzenia można uzyskać nieoczekiwane zachowanie w panelu podczas filtrowania.
Plik jest gotowy, proszę wejść w Wtyczki, znaleźć „Tags for Pages" i aktywować. To wszystko. Przy zmianie motywu wtyczka pozostaje aktywna, tagi nie znikają. Na multisite wtyczkę można włączać na poszczególne witryny lub aktywować od razu dla całej sieci.
Sposób 3: Gotowe wtyczki z katalogu
Jeśli nie chcą Państwo pisać kodu, zadanie zamykają gotowe rozwiązania z WordPress.org. Dodają one nie tylko tagi, ale i kategorie dla stron, plus interfejs zarządzania.
Add Categories to Pages to lekka wtyczka, która jednym zaznaczeniem włącza zarówno kategorie, jak i tagi dla stron. Bez ustawień, bez reklam. Pasuje, gdy potrzebują Państwo po prostu „żeby działało" bez dodatkowych ekranów.
Oto demonstracja wideo instalacji tagów na stronach przez kod i przez wtyczkę, 4 minuty, wszystkie kroki pokazane w czasie rzeczywistym:
Kluczowa kwestia: zewnętrzne wtyczki ciągną za sobą dodatkowy kod i hooki. Jeśli witryna jest już obciążona kilkunastoma wtyczkami, kolejna to dodatkowy punkt awarii. Kod ze sposobów 1 i 2 waży zaledwie kilka bajtów i nie dodaje zapytań do bazy danych ponad standardowe.
⁉️🤔 Często zadawane pytania
Czy to działa na multisite? Tak, kod jest uniwersalny. Można aktywować wtyczkę na poszczególne witryny lub włączyć na całą sieć przez „Aktywuj w sieci".
Na multisite WordPress kod działa tak samo na wszystkich witrynach sieci. Funkcja
register_taxonomy_for_object_type()jest powiązana z taksonomiąpost_tag, która istnieje w każdej witrynie sieci osobno, tagi nie krzyżują się między witrynami. Dla każdej witryny podrzędnej tagi na stronach włącza się niezależnie: aktywowano wtyczkę na jednej witrynie, tagi pojawiły się tylko tam.
Czy trzeba aktualizować bezpośrednie odnośniki po wstawieniu kodu? Nie, struktura URL nie zmienia się. Tagi na stronach nie dodają nowych reguł przepisywania.
WordPress przechowuje powiązanie „strona, tag" w tabeli
wp_term_relationships, tej samej, która jest używana dla postów. Żadne reguły rewrite nie są naruszane: archiwum tagu już istnieje (/tag/название/), a pre_get_posts po prostu włącza strony do jego wyników. Bezpośrednich odnośników można nie ruszać, wszystko działa od razu po aktywacji kodu.
Czy tagi znikną przy zmianie motywu? Zależy od sposobu. Kod w functions.php motywu: znikną. Kod we wtyczce lub Code Snippets: pozostaną.
Przy zmianie motywu WordPress ładuje nowy
functions.php, dlatego snippet ze starego motywu przestaje być wykonywany, a metabox tagów na stronach znika. Same powiązania „strona, tag" w bazie danych nie są przy tym usuwane. Wystarczy przywrócić kod (w nowym motywie lub przez wtyczkę), a wszystkie wcześniej przypisane tagi zostaną przywrócone w panelu administracyjnym.
Czy można przypisać tagi programowo podczas importu stron? Tak, przez wp_set_object_terms( $page_id, array( 'тег1', 'тег2' ), 'post_tag' ).
Funkcja
wp_set_object_terms()przyjmuje ID strony, tablicę nazw tagów i nazwę taksonomii. Jeśli tag o takiej nazwie nie istnieje, WordPress utworzy go automatycznie. Jest to wygodne podczas migracji: skrypt przebiega po wszystkich stronach i przypisuje tagi z pliku CSV lub starego CMS. Ważne, aby uruchomić skrypt poinit, w przeciwnym razie taksonomia nie jest jeszcze zarejestrowana.
Co z chmurą tagów, strony do niej trafią? Tak, standardowy widget „Chmura tagów" pobierze tagi ze stron bez dodatkowych ustawień.
Widget
wp_tag_cloud()domyślnie zbiera wszystkie obiekty taksonomiipost_tagniezależnie od typu wpisu. Gdy tylko na stronie pojawi się choć jeden tag, trafia on do chmury na równi z tagami postów. Częstotliwość również jest liczona poprawnie: tag na trzech stronach i dwóch postach da wagę „5" i wyświetli się większym rozmiarem.
Co wybrać: kod czy wtyczkę
Konkretny wybór zależy od scenariusza, a nie od „prawidłowej odpowiedzi".
Użytkownikom pojedynczych witryn, którzy nie zmieniają motywu latami, wystarczy snippet w functions.php: skopiowany, wklejony, działa. Freelancerom z kilkunastoma witrynami klientów wygodniejsza będzie wtyczka: wysłany plik zip do klienta lub aktywacja na nowym projekcie w sekundę. Tym, którzy już korzystają z Code Snippets lub WPCodeBox, łatwiej dodać snippet do kolekcji, nie zgubi się przy aktualizacji motywu i nie wymaga osobnej wtyczki.
Jeśli potrzebują Państwo więcej niż tagi: kategorie, dowolne taksonomie, rozszerzone filtrowanie, proszę spojrzeć na gotowe wtyczki z WordPress.org. Ale do zadania „włączyć tagi na stronach" siedem linii kodu w zupełności wystarczy. Wszystko inne to przesada.
Następnie proszę skonfigurować strukturę tagów: przemyśleć 5-7 kluczowych tematów dla stron i przypisać je. Po miesiącu chmura tagów sama pokaże, które tematy witryny są ze sobą najsilniej powiązane.



