Skip to content

Kõik WordPressist, veebiarendusest — ja mitte ainult

🔖 Kuidas lubada silte WordPressi lehtedel

🔖 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_tag taksonoomia page postitüübile, kasutades ühte funktsiooni register_taxonomy_for_object_type

  • Lisa siltide tugi arhiividele pre_get_posts konksu kaudu, et lehed ilmuksid sildipäringu tulemustes

  • Kood 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 */
5function sdstudio_add_tags_to_pages() {
6 register_taxonomy_for_object_type( 'post_tag', 'page' );
7}
8add_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 */
14function sdstudio_pages_in_tag_archives( $wp_query ) {
15 if ( $wp_query->get( 'tag' ) ) {
16 $wp_query->set( 'post_type', 'any' );
17 }
18}
19add_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:

1register_taxonomy_for_object_type( 'post_tag', 'portfolio' );
2register_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
11if ( ! defined( 'ABSPATH' ) ) {
12 exit;
13}
14
15// Tags → pages
16function sdstudio_tags_for_pages() {
17 register_taxonomy_for_object_type( 'post_tag', 'page' );
18}
19add_action( 'init', 'sdstudio_tags_for_pages' );
20
21// Pages → tag archive
22function 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}
27add_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 seotud post_tag taksonoomiaga, 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ärast init, 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õik post_tag taksonoomia 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.