Skip to content

Kõik WordPressist, veebiarendusest — ja mitte ainult

🔧 WordPress: kuidas kuvada vidinat otsetee abil ükskõik kus oma saidil

🔧 WordPress: kuidas kuvada vidinat otsetee abil ükskõik kus oma saidil

Teilimisvormi pole vaja mitte külgribal, vaid otse postituse keskel. Või WooCommerce’i kataloogividin lehel, millel pole üldse külgriba. Lähed administraatoripaneeli, otsid plokki ja WordPress ütleb: vidinad elavad ainult registreeritud teemapiirkondades. Kõik.

Piirang on arhitektuurne: vidinasüsteem on seotud tsoonidega nagu sidebar-1, footer-widgets ja muud teemas määratletud alad. Postituse sisu on selle jaoks võõras territoorium. Sellest saab mööda minna, kuid tuumikus pole standardset „lisa vidin siia" valikut.

Vidinate lühikood lahendab probleemi ühe reaga. Pole vaja luua eraldi ala, pole vaja alamteemat ega malli redigeerimist. Allpool on kirjeldatud, kuidas see 2026. aastal töötab: valmis plugin, kõik parameetrid ja arendajatele mõeldud natiivne PHP alternatiiv.

💡 Kiirülevaade:

  • Paigalda WP Anywhere Widgets, plugin genereerib igale registreeritud vidinale lühikoodi.
  • Lisa lühikood postitusse, lehele, külgribale või teema PHP malli.
  • Seadista pealkiri, HTML-ümbris ja CSS-klassid lühikoodi parameetrite kaudu.
  • Projektides, kus ei kasutata kolmandate osapoolte pluginaid, kasuta natiivset funktsiooni the_widget().

Miks on vidinate jaoks lühikoodi vaja

WordPress ei võimalda tavaliste tööriistadega vidinat postituse sisu sees kuvada. Vidinasüsteem töötab ainult registreeritud teemapiirkondades ja kõike väljaspool neid piire selle jaoks ei eksisteeri.

Praktikas tekib vajadus kolme stsenaariumi korral:

  • Tellimisvorm pikas juhendis. Külgriba on keritud vaateväljast välja, lugeja ei näe vormi. Lühikood hoiab kutse tegevusele otse postituse sisus, lugeja silme all.

  • WooCommerce’i vidin kohandatud lehel. Leht on loodud ilma külgribata, kuid tootefiltrid või otsing ([woocommerce_product_search]) peavad just seal olema.

  • Dünaamiline „Seotud postitused" plokk single.php mallis. Teema ei pakkunud ala enne kommentaare. Funktsioonist functions.php välja kutsutud lühikood paigutab vidina ükskõik kuhu, ilma malle puutumata.

Varem tegeles selle ülesandega Widget Shortcode’i plugin: lihtne tööriist, mis genereeris igale registreeritud vidinale [widget id="text-1"]. 2023. aasta jaanuaris suleti see lahendamata turvaaugu tõttu. Otsene järeltulija on WP Anywhere Widgets.

WP Anywhere Widgets: lühikoodi generaator igale vidinale

WP Anywhere Widgets võttis sama idee üle, kuid läks kaugemale. See mitte ainult ei paku olemasolevatele vidinatele lühikoode, vaid võimaldab luua ka oma vidinaid otse administraatoripaneelis, sidumata neid külgribaga. See toetab nii klassikalist vidinaredaktorit kui ka Gutenbergi plokke.

WP Anywhere Widgetsi kõigi vidinate otseteede leht

Paigaldamine on standardne: Plugins → Add New → otsi „WP Anywhere Widgets" → Install → Activate. Pärast aktiveerimist ilmub Appearance menüüsse Widget Shortcodes kirje: koondtabel kõigist loodud vidinatest ja nende lühikoodidest. Igaühe kõrval on nupp „Copy".

Plugin töötab WordPress 3.3 ja uuematega, testitud kuni versioonini 6.8.5. 2026. aasta juuni seisuga on sellel 700+ aktiivset paigaldust ja hinnang 4,8/5 WordPress.org-is. Viimane uuendus (v4.0) lisas täieliku Gutenbergi plokkide toe ja eraldi administraatorilehe lühikoodide haldamiseks.

🔗 WP Anywhere Widgets WordPress.org-is

Kuidas genereerida vidina lühikoodi

Iga süsteemis registreeritud vidin saab kordumatu ID: text-1, calendar-3 või block-7. WP Anywhere Widgets kuvab selle ID liideses ja pakub kohe valmis lühikoodi:

Vidina otsetee genereerimine WordPressi administraatoris

Põhisüntaks:

1[widget id="text-1"]

Lisa see ükskõik millisesse postitusse, lehele või tekstiplokki. Plugin asendab selle vidina täieliku HTML-iga: pealkiri, sisu, ümbris koos teema CSS-klassidega. Lisaseadistusi pole vaja.

Lühikoodi lisamine postitusse ja Gutenbergi redaktoris

Klassikalises redaktoris lisatakse lühikood otse teksti, täpselt nagu [gallery] või [contact-form-7]:

Vidina otsetee lisamine WordPressi postituse sisusse

Plokiredaktoris kasuta Shortcode plokki. Lisa plokk, kleebi [widget id="text-1"] ja WordPress kuvab vidina visuaalses redaktoris:

Vidina otsetee Gutenbergi plokiredaktoris

Kui vidin sisaldab JavaScripti (näiteks kaart või vorm), siis redaktoris seda ei käivitata. See on Gutenbergi turvalisuse piirang. Esiküljel töötab kõik normaalselt.

Lühikoodi parameetrid: pealkiri, ümbris ja CSS-klassid

Lühikood aktsepteerib mitmeid valikulisi parameetreid, mis muudavad HTML-väljundit ilma ühegi koodireata:

Vidina otsetee parameetrite seadistamise liides

title, pealkirja ülekirjutamine. Vaikimisi näitab vidin oma seadetes määratud pealkirja. Parameeter title asendab selle käigu pealt:

1[widget id="text-1" title="New title"]

Pealkirja täielikuks peitmiseks anna title="0". Vidin kuvatakse ilma sisu kohal oleva <h2> või <h3> elemendita.

container_tag, ümbrise HTML-element. Vaikimisi on vidin mähitud <div> sisse. Asenda see <section>, <aside> või mõne muu semantilise elemendiga:

1[widget id="text-1" container_tag="aside"]

container_class, täiendav CSS-klass. Sinu klass lisatakse standardsele widget klassile. Kasulik konkreetse eksemplari kohandatud kujundamiseks:

1[widget id="text-1" container_class="my-custom-widget"]

container_id, HTML id atribuut. Vaikimisi genereerib WordPress ID automaatselt. See parameeter fikseerib väärtuse ankurlinkide ja JavaScripti sihtimise jaoks:

1[widget id="text-1" container_id="subscribe-widget"]

title_tag** ja title_class, pealkirja juhtimine.** Muuda pealkirja elementi vaikeväärtuselt <h2> elemendiks <h3>, <h4> ja lisa kohandatud klass:

1[widget id="text-1" title_tag="h3" title_class="widget-title-large"]

Kõiki parameetreid saab ühes lühikoodis kombineerida. Järjekord pole oluline, süntaks on standardne: param="value".

PHP meetod: funktsioon the_widget() arendajatele

Kui pluginat pole vaja, pakub WordPress natiivset funktsiooni the_widget(). See väljastab mis tahes registreeritud vidina otse PHP-st: teemas, alamteemas või Code Snippetsi katkendis.

Põhiline väljakutse:

1the_widget( 'WP_Widget_Text', array(
2 'title' => 'Subscription form',
3 'text' => '[mailpoet_form id="1"]',
4 'filter' => true,
5) );

Esimene argument on vidina PHP klass. Teine on seadete massiiv, mis vastab sellele, mida vidin salvestab tabelisse wp_options. Kolmas on ümbrise argumentide massiiv:

1the_widget( 'WP_Widget_Text',
2 array( 'title' => 'Subscribe', 'text' => '[shortcode]' ),
3 array(
4 'before_widget' => '<section class="widget %2$s">',
5 'after_widget' => '</section>',
6 'before_title' => '<h3 class="widget-title">',
7 'after_title' => '</h3>',
8 )
9);

See lähenemine ei sõltu kolmandate osapoolte pluginatest ega purune WordPressi uuendustega. Puudus: pead teadma iga vidina PHP klassi. Standardsed tuumikuklassid:

  • WP_Widget_Text
  • WP_Widget_Calendar
  • WP_Widget_Search
  • WP_Widget_Categories

Plugina klassi leiad selle lähtekoodist või var_dump( $wp_widget_factory->widgets ) abil.

Kood läheb aktiivse teema (eelistatavalt alamteema) faili functions.php või Code Snippetsi plugina kaudu. Enne faili functions.php redigeerimist tee sellest varukoopia: PHP süntaksiviga viib kogu saidi rivist välja.

⁉️🤔 Korduma kippuvad küsimused

Kas vidina lühikood töötab vahemällu salvestavate pluginatega?

Jah, lühikoodi töötleb server lehe renderdamise ajal, enne kui HTML vahemällu siseneb. WP Rocket, W3 Total Cache ja LiteSpeed Cache salvestavad juba kokkupandud lehe koos valmis vidinaga. Dünaamiliste andmete (WooCommerce ostukorv, valuutakursid) puhul kasuta ESI plokke, et konkreetne fragment vahemälust välja jätta. Funktsioon the_widget() koos konstandiga DOING_AJAX annab täieliku kontrolli selle üle, mis läheb vahemällu ja mis mitte.

Kas vidin peab olema aktiivsel külgribal?

Ei, vidin ei pea olema aktiivsel külgribal. See peab lihtsalt olema WordPressis registreeritud ja lisatud ükskõik millisele külgribale, sealhulgas mitteaktiivsele (Inactive Widgets). WP Anywhere Widgets loob vidinad oma sisemises registris, mis pole üldse teemapiirkondadega seotud.

Mitu vidinat saab ühel lehel lühikoodi kaudu kuvada?

Koguselisi piiranguid pole. Iga [widget] või the_widget() väljakutse loob sõltumatu eksemplari. Jõudlus sõltub ainult vidinate endi keerukusest: kümme tekstiplokki või tellimisvormi käivitatakse silmapilkselt, samas kui kümme väliste API päringutega vidinat lisavad igaüks 200-300 ms. API-mahukate vidinate puhul salvesta tulemused the_widget() sees transient abil vahemällu.

Mis juhtub, kui vidina plugin eemaldatakse, kuid selle lühikood jääb postitustesse alles?

Ilma aktiivse töötlejata lühikood väljastatakse tavalise tekstina: külastajad näevad lehel otse teksti [widget id="text-1"]. Enne lähteplugina eemaldamist kontrolli kõiki postitusi administraatoriotsingu kaudu: Tools → Better Search Replace või WP-CLI: wp search-replace '[widget id="text-1"]' '' --dry-run. Pärast massilist asendamist puhasta andmebaasis tühjad lõigud eraldi.

Kas vidina lühikoodi saab navigatsioonimenüüs kasutada?

WordPressi menüüd ei töötle vaikimisi lühikoode. Vidina lisamiseks navigatsiooni kasuta failis functions.php filtrit wp_nav_menu_items koos väljakutsega do_shortcode('[widget id="..."]'): see lisab lühikoodi enne, pärast või konkreetsete menüüelementide vahele. Alternatiiv: kohandatud Walker klass, mis parsib menüüelemendi nimes oleva {widget} kohahoidja ja asendab selle elava vidinaga.

Mida valida: plugin või kohandatud kood

Enamikul juhtudel saab WP Anywhere Widgets ülesandega täielikult hakkama. Paigalda see, kopeeri lühikood, kleebi vajalikku kohta. Parameetritest piisab ümbrise kohandamiseks ilma ühegi CSS-i reata.

PHP meetod the_widget() kaudu on õigustatud kahes olukorras: oled arendaja, kes püüdleb nulli kolmanda osapoole plugina poole projektis, või vajad eriloogikat (näiteks erinevad vidinad sisselogitud kasutajatele ja külalistele). Vastasel juhul kasuta pluginat ja ära aja asju keeruliseks.

Kui su eesmärk on konkreetselt tellimisvormi postituse keskele manustamine, kaalu e-posti pluginaid, millel on natiivne lühikoodi tugi: MailPoet, Newsletter, Brevo. Igaüks neist pakub valmis [form] lühikoodi koos paigutuse juhtimisega, samas kui WP Anywhere Widgets toimib universaalse kihina kõige muu jaoks.

Visuaalne demonstratsioon WebTutorials kanalilt: täistsükkel plugina paigaldamisest töötava lühikoodini lehel, kiirelt ja asjalikult.