
🔖 Kuidas lubada silte WordPressi lehtedel
WordPressi lehed ei toeta vaikimisi silte ja see on tüütu, kuni mõistad, miks see nii on tehtud. Leht WordPressis on tehniliselt kohandatud postitüüp, millele post_tag taksonoomia lihtsalt pole lisatud. Tuumikarendajad hoidsid sildid ainult postituste jaoks, käsitledes lehti staatilise sisuna.
Kuid praktikas saab sellest piirangust mööda minna viie minutiga. Kaks meetodit: koodirida failis functions.php või mikroplugin, mida saab lubada ja keelata ilma teemat redigeerimata. Allpool on mõlemad variandid koos selgitusega, mis täpselt kapoti all toimub.
💡 Kiire ülevaade:
Registreeri
post_tagtaksonoomiapagepostitüübile, kasutades ühte funktsiooniregister_taxonomy_for_object_typeLisa siltide tugi arhiividele
pre_get_postskonksu kaudu, et lehed ilmuksid sildipäringu tulemustesKood töötab mis tahes kohandatud postitüüpidega; lihtsalt korda kutset soovitud tüübi nimega
Kõik pakitakse eraldi pluginasse ühe minutiga: fail → pluginapäis → kood → aktiveerimine
Miks lehtedel silte kasutada
Sildid pole lihtsalt külgriba pilv. Need on navigatsioonitelg, mis seob hajutatud lehed temaatilistesse rühmadesse kiiremini kui kategooriad või menüüd.
WordPressi lehti tekib sageli palju: kontaktid, privaatsuspoliitika, tingimused, teenuste sihtlehed, portfooliod, dokumentatsioon. Ilma siltideta tugineb nendevaheline seos ainult käsitsi lisatud linkidele tekstis. Siltidega satub üks „Tarne" leht automaatselt „logistika" rühma „Tagastuste" lehe kõrvale ja külastajad klõpsavad sildil, et näha kõike seonduvat.
SEO jaoks pakuvad lehtede sildid täiendavat sisemist linkimist ja vähendavad põrkemäära: kasutajad ei lahku pärast esimest lehte, vaid sukelduvad temaatilisse kogumikku. Lisaks jõuavad sildid saidikaardile, aidates otsingumootoritel struktuuri paremini mõista.
Meetod 1: kood failis functions.php
Kõige otsesem tee on lisada lõik aktiivse teema faili functions.php. Ava wp-content/themes/YOUR_THEME/functions.php ja kleebi kood enne sulgevat ?> või faili lõppu:
1 /** 2 * Add tag support to WordPress pages. 3 * Code — in functions.php of child theme or via Code Snippets plugin. 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 * Include pages in tag archive queries. 12 * Without this, pages won't appear on /tag/tag-name/ 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' );
Siin on, mis toimub. Funktsioon register_taxonomy_for_object_type() seob olemasoleva post_tag taksonoomia page postitüübiga. See on WordPressi tuumikfunktsioon; dokumentatsioon developer.wordpress.org-is. See ei loo uut taksonoomiat, vaid lisab ainult „lehed → sildid" seose.
pre_get_posts konks muudab SQL-päringut enne selle käivitamist. Kui WordPress koostab sildiarhiivi lehte (/tag/name/), otsib see vaikimisi ainult post tüüpi postitusi. Rida $wp_query->set( 'post_type', 'any' ) laiendab valikut kõigile tüüpidele: lehed, postitused, kohandatud tüübid.
Pärast koodi sisestamist mine ükskõik millisele lehele ja külgribale ilmub „Sildid" plokk täpselt nagu tavaliste postituste puhul. See töötab kohe; vahemälu pole vaja tühjendada.
Kohandamine kohandatud postitüüpide jaoks
Kui sul on kohandatud postitüüpe (CPT), nagu portfooliod, iseloomustused või tooted, mis vajavad samuti silte, lisa sama arv register_taxonomy_for_object_type() kutseid oma init funktsiooni sisse:
1 register_taxonomy_for_object_type( 'post_tag', 'portfolio' ); 2 register_taxonomy_for_object_type( 'post_tag', 'testimonials' );
CPT nimi on teine argument, sama, mis määrati tüübi registreerimisel register_post_type() kaudu. pre_get_posts täiendavaid muudatusi pole vaja: 'any' hõlmab juba kõiki registreeritud tüüpe.
Meetod 2: eraldi plugin
functions.php otse redigeerimine on toimiv lahendus, kuid habras. Vaheta teemat ja kood kaob, võttes lehtedelt sildid kaasa. Neile, kes haldavad mitut saiti või vahetavad sageli teemasid, on usaldusväärsem viia lõik eraldi pluginasse.
Loo fail wp-content/plugins/sdstudio-tags-for-pages.php järgmise sisuga:
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 // Direct access — forbidden 11 if ( ! defined( 'ABSPATH' ) ) { 12 exit; 13 } 14 15 // Tags → pages 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 // Pages → tag archive 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' );
Erinevus esimesest meetodist on kontroll ! is_admin() && $wp_query->is_main_query(). See tagab, et administraatori päringuid ei mõjutata: pre_get_posts käivitub igal pool, sealhulgas armatuurlaua lehtede loendis, ja ilma selle kontrollita võid filtreerimisel saada ootamatut administraatori käitumist.
Fail on valmis; mine Pluginad, leia „Tags for Pages" ja aktiveeri see. Kõik. Teemat vahetades jääb plugin aktiivseks ja sildid ei kao. Mitmiksaidil saab pluginat lubada saidipõhiselt või võrguüleselt kogu võrgu jaoks.
Meetod 3: valmispluginad kataloogist
Kui sa ei soovi koodi kirjutada, lahendavad ülesande WordPress.org-i valmislahendused. Need lisavad mitte ainult silte, vaid ka kategooriaid lehtedele, pluss haldusliidese.
Add Categories to Pages on kerge plugin, mis lubab nii kategooriad kui ka sildid lehtedele ühe märkeruuduga. Seadeid pole, reklaame pole. Sobib, kui vajad lihtsalt, et asjad töötaksid ilma lisaekraanideta.
Siin on videoesitlus siltide lisamisest lehtedele koodi ja plugina abil, 4 minutit, kõik sammud näidatud reaalajas:
Võtmepunkt: kolmandate osapoolte pluginad toovad kaasa lisakoodi ja konkse. Kui su sait on juba koormatud tosina pluginaga, on üks veel üks tõrkepunkt. Meetodite 1 ja 2 kood kaalub vaid baite ega lisa andmebaasipäringuid peale standardsete.
⁉️🤔 Korduma kippuvad küsimused
Kas see töötab mitmiksaidil? Jah, kood on universaalne. Saad pluginat aktiveerida saidipõhiselt või lubada võrguüleselt „Võrgu aktiveerimise" kaudu.
WordPressi mitmiksaidil töötab kood identselt kõigil võrgu saitidel. Funktsioon
register_taxonomy_for_object_type()on seotudpost_tagtaksonoomiaga, mis eksisteerib igal saidil võrgus eraldi, nii et sildid ei kattu saitide vahel. Iga alamsaidi jaoks lubatakse lehtede sildid iseseisvalt: aktiveeri plugin ühel saidil ja sildid ilmuvad ainult seal.
Kas pärast koodi sisestamist on vaja uuendada püsilinke? Ei, URL-i struktuur ei muutu. Lehtede sildid ei lisa uusi ümberkirjutusreegleid.
WordPress salvestab „leht, silt" seose tabelisse
wp_term_relationships, samasse, mida kasutatakse postituste jaoks. Ümberkirjutusreegleid ei mõjutata: sildiarhiiv on juba olemas (/tag/name/) ja pre_get_posts lihtsalt kaasab lehed oma päringusse. Püsilinke pole vaja puudutada; kõik töötab kohe pärast koodi aktiveerimist.
Kas sildid kaovad teema vahetamisel? See sõltub meetodist. Teema functions.php failis olev kood põhjustab nende kadumise. Pluginasse või Code Snippetsisse paigutatud kood säilitab need.
Teemat vahetades laadib WordPress uue
functions.php, nii et vana teema lõik lakkab töötamast ja siltide metakast lehtedel kaob. Andmebaasis olevaid „leht, silt" seoseid siiski ei kustutata. Taasta lihtsalt kood (uues teemas või plugina kaudu) ja kõik varem määratud sildid ilmuvad administraatoris uuesti.
Kas ma saan silte programmiliselt määrata lehtede importimisel? Jah, wp_set_object_terms( $page_id, array( 'tag1', 'tag2' ), 'post_tag' ) kaudu.
Funktsioon
wp_set_object_terms()võtab vastu lehe ID, sildinimede massiivi ja taksonoomia nime. Kui sellenimelist silti pole, loob WordPress selle automaatselt. See on mugav migreerimisel: skript käib läbi kõik lehed ja määrab sildid CSV-failist või vanast CMS-ist. Oluline on käivitada skript pärastinit, vastasel juhul pole taksonoomia veel registreeritud.
Aga sildipilv: kas lehed ilmuvad selles? Jah, tavaline „Sildipilve" vidin korjab lehtede sildid üles ilma täiendava seadistuseta.
wp_tag_cloud()vidin kogub vaikimisi kõikpost_tagtaksonoomia objektid, sõltumata postitüübist. Niipea kui lehel on vähemalt üks silt, siseneb see pilve võrdselt postituste siltidega. Sagedus arvutatakse samuti õigesti: silt kolmel lehel ja kahel postitusel annab kaaluks „5" ja kuvatakse suuremalt.
Mida valida: kood või plugin
Konkreetne valik sõltub sinu stsenaariumist, mitte „õigest vastusest".
Ühe saidi omanikele, kes ei vaheta teemasid aastaid, piisab lõigust failis functions.php: kopeeri, kleebi, valmis. Vabakutselistele, kellel on tosin kliendisaiti, on plugin mugavam: saada zip-fail kliendile või aktiveeri uuel projektil sekunditega. Need, kes juba kasutavad Code Snippetsit või WPCodeBoxi, saavad lõigu lihtsalt oma kogusse lisada; see ei kao teemavärskendustel ega vaja eraldi pluginat.
Kui vajad enamat kui silte (kategooriaid, kohandatud taksonoomiaid, täpsemat filtreerimist), vaata WordPress.org-i valmispluginaid. Kuid ülesande „lehtedele siltide lubamine" jaoks piisab seitsmest koodireast. Kõik muu on ülepingutus.
Järgmiseks sea üles oma sildistruktuur: mõtle läbi 5-7 võtmeteemat lehtede jaoks ja määra need. Kuu aja pärast näitab sildipilv, millised saidi teemad on kõige tugevamalt seotud.



