Skip to content

Kõik WordPressist, veebiarendusest — ja mitte ainult

📋 Täielik WordPressi spikker

📋 Täielik WordPressi spikker

Avasid faili functions.php ja unustasid, kuidas külgriba ühendada? Seda juhtub igaühega, kes käsitsi WordPressi teemat kodeerib. Vaja on ühte lehte käepärast, mitte kümmet developer.wordpress.org vahekaarti.

Siit leiad WordPressi arenduse põhitõed: 13 mallifaili ja nende valimise hierarhia, põhilise Loopi, kaasamissildid ja bloginfo() parameetrid, seejärel konksud ja filtrid, tingimussildid, skriptide järjekorda panemine, lühikoodid, WP_Query, andmete eskeipimine, REST API ja WP-CLI käsud. Kõik koodinäited töötavad. Hoia see vahekaart arenduse ajal lahti ja kontrolli töö käigus.

💡 Kiirülevaade:

  • Lisa see leht järjehoidjatesse ja hoia seda teema ehitamise ajal eraldi vahekaardil avatuna.
  • Alusta jaotisest „Teema anatoomia": loo mallifailid nimekirja alusel enne koodi kirjutamist.
  • Kopeeri põhiline WordPressi Loop faili index.php ja ümbritse see päise, külgriba ja jaluse kaasamissiltidega.
  • Lisa bloginfo() ja get_bloginfo() sildid tabelist otse mallidesse, kontrollides samal ajal veergu „Mida see väljastab".
  • Enne avaldamist käi läbi style.css reeglid: valideeri CSS, minifitseeri ja lisa prindistiilid.
  • Lehe allpool on viide: mallihierarhia, konksud ja filtrid, tingimussildid, skriptide järjekorda panemine, lühikoodid, WP_Query, eskeipimine, REST API ja WP-CLI.

WordPressi teema anatoomia

WordPressi teemafailide struktuuri skeem

WordPressi teema on PHP-failide kogum, mida ühendab ühine loogika ja mida juhib mallihierarhia. Võtmekomponent: style.css, mis tegeleb visuaalse kujundusega ja toimib samaaegselt teema identifikaatorina administraatoriliideses. Kuid iga klassikalise teema alus on PHP-mallid: igaüks neist käsitleb oma lehe sektsiooni ja neid kutsutakse välja WordPressi hierarhiaga määratud järjekorras.

Standardse teema loomiseks vajad järgmisi faile, neid on kolmteist, igaüks katab kindlat saidi tsooni:

  • header.php, <head> sektsioon ja lehe ülaosa: metaandmed, saidi pealkiri, style.css kaasamine, avav <body> silt.
  • index.php, peamine mall, sisenemispunkt. Koondab teised failid kaasamissiltide abil ühtseks leheks. Kui spetsialiseeritud malli pole, kasutab WordPress varuna index.php.
  • sidebar.php, külgriba: vidinad, kategooriad, otsing, teisene menüü.
  • footer.php, jalus: autoriõigused, sotsiaalmeedia lingid, analüütikaskriptid, sulgevad </body></html> sildid.
  • page.php, mall lehtede jaoks (staatiline sisu, „Meist", „Kontakt").
  • single.php, mall üksiku blogipostituse jaoks.
  • comments.php, kommentaaride plokk ja esitamisvorm.
  • 404.php, 404 vealeht. Kui see fail puudub, kuvab WordPress vaikimisi süsteemiteate, mis on külastaja jaoks halvem.
  • search.php, mall otsingutulemuste jaoks.
  • searchform.php, otsinguvorm (klassikalistes teemades; kaasaegsed kasutavad sageli vidinat).
  • archive.php, mall arhiivide jaoks: kategooriad, sildid, kuupäevaarhiivid.
  • functions.php, teema funktsionaalne süda: kohandatud konksud, skriptide ja stiilide järjekorda panemine, menüüde registreerimine, vidinaalad, kohandatud postitüübid. Kõik, mis lisab teemale funktsionaalsust, asub siin.
  • style.css, ainus mitte-PHP-fail selles nimekirjas, kuid ilma selleta pole teemat olemas: see salvestab teema päise ja määrab saidi välimuse.

Saad hakkama ka vähemate mallidega, näiteks index.php + style.css moodustavad juba minimaalse teema. Kuid täisfunktsionaalse saidi jaoks on parem hoida kõiki kolmeteist: iga fail on kohandatud oma ülesandele ja WordPress ise valib hierarhia alusel õige. Tüüpiline index.php näeb välja selline:

1<?php get_header(); ?>
2
3<!-- Main content, including the Loop -->
4
5<?php get_sidebar(); ?>
6<?php get_footer(); ?>

Liigume edasi kõige olulisema koodifragmendi juurde, ilma milleta ei kuvata ühtegi postitust.

WordPressi Loop

Loop on sisu väljastamise keskne mehhanism. Ilma selleta peaksid iga postituse ja iga lehe kuvamise teemamallis käsitsi kodeerima. Loop teeb täpselt seda, mida selle nimi lubab: see käib läbi kõik praegusele päringule vastavad postitused ja rakendab igale neist sinu määratud HTML/PHP märgendust.

Loopi põhisüntaks:

1<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
2 <!-- HTML markup and template tags for each post -->
3<?php endwhile; endif; ?>

have_posts() kontrollib, kas väljastamiseks on postitusi. Kui on, siis the_post() lähtestab WordPressi sisemise viida praegusele postitusele, mille järel muutuvad Loopi sees kättesaadavaks kümned mallisildid: the_title() pealkirja jaoks, the_content() postituse teksti jaoks, the_permalink() lingi jaoks, the_excerpt() väljavõtte jaoks ja paljud teised.

Loop paigutatakse tavaliselt faili index.php, et väljastada postituste loend, kuid miski ei takista sind seda kasutamast failides single.php, page.php või archive.php, loogika on sama, erineb ainult kontekst. Loopi sisse lisa suvalised HTML-ümbrised ja PHP-sildid, WordPress rakendab need igale postitusele kordamööda.

Praktiline näide, iga postituse pealkirja ja kuupäeva väljastamine:

1<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
2 <article>
3 <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
4 <time><?php echo get_the_date(); ?></time>
5 </article>
6<?php endwhile; endif; ?>

Nüüd sellest, kuidas Loop suhtleb ülejäänud teemaga, kaasamissiltide kaudu.

Malli kaasamissildid

Kaasamissildid on PHP-funktsioonid, mis laadivad ühe teemafaili sisu teise. Need moodustavad tüüpilise index.php skeleti: päis, sisu, külgriba, jalus. Neli põhifunktsiooni:

  • <?php get_header(); ?>, kaasab faili header.php. Tavaliselt esimene rida failis index.php ja igas teises mallis, mis vajab päist.
  • <?php get_sidebar(); ?>, kaasab faili sidebar.php. Kui külgriba pole vaja, eemalda lihtsalt see väljakutse.
  • <?php get_footer(); ?>, kaasab faili footer.php. Alati malli lõpus, sulgeb lehe.
  • <?php comments_template(); ?>, kaasab faili comments.php. Paigutatakse faili single.php sisse, pärast postituse sisu väljastamist.

Kõik neli funktsiooni otsivad faile aktiivse teema kaustast. Kui faili pole, ei väljasta WordPress lihtsalt midagi (välja arvatud get_header() ja get_footer(), nende puudumine lõhub kujunduse).

Järgmine tase, sildid, mis mitte ainult ei kaasa faile, vaid eraldavad andmeid andmebaasist.

Bloginfo sildid

Näide saidi andmete väljastamisest bloginfo funktsiooni kaudu WordPressis

bloginfo() sildid eraldavad saidi kohta teavet WordPressi andmebaasist, sedasama teavet, mille sisestad jaotises Seaded → Üldine ja kasutajaprofiilis. Funktsioon tagastab stringi ja väljastab selle kohe ekraanile. Kõige sagedamini kasutatavad parameetrid:

Parameeter

Mida see väljastab

<?php bloginfo('name'); ?>

Saidi pealkiri

<?php bloginfo('url'); ?>

Saidi URL

<?php bloginfo('description'); ?>

Alapealkiri (saidi kirjeldus)

<?php bloginfo('charset'); ?>

Kooditabel (vaikimisi UTF-8)

<?php bloginfo('stylesheet_url'); ?>

Aktiivse teema style.css URL

<?php bloginfo('version'); ?>

Paigaldatud WordPressi versioon

<?php bloginfo('language'); ?>

Saidi keel

<?php bloginfo('rss_url'); ?>

RSS-voo URL (RSS 0.92)

<?php bloginfo('rss2_url'); ?>

RSS-voo URL (RSS 2.0)

See on vaid jäämäe tipp, parameetrite täielik nimekiri on WordPressi dokumentatsioonis.

Get_bloginfo(), kui on vaja pigem salvestada kui väljastada

Juhtudel, kui saidi teavet on vaja koodis kasutada, mitte lihtsalt lehel kuvada, kasuta funktsiooni get_bloginfo():

1<?php $info = get_bloginfo( $show, $filter ); ?>
  • $show, märksõna. Toetatud väärtused on 'name' (pealkiri), 'url' (aadress), 'description' (alapealkiri), 'admin_email' (administraatori e-post) ja teised; täielik nimekiri dokumentatsioonis.
  • $filter, filtreerimisrežiim: 'raw' (väärtus „nagu on", vaikimisi) või 'display' (väärtus suunatakse läbi wptexturize(), teisendab jutumärgid, mõttekriipsud, märgid).

Näide: hangi saidi kirjeldus ja väljasta see koos eesliitega:

1<?php $site_description = get_bloginfo( 'description' ); ?>
2<?php echo 'Your site tagline: ' . esc_html( $site_description ); ?>

Tulemus: „Sinu saidi tunnuslause: Parimad premium WordPressi teemad".

Lisaks funktsioonile bloginfo on WordPressil ulatuslik mallisiltide süsteem: üldised sildid, autori sildid, pisipildi sildid, kategooria sildid, lingi sildid, mis kõik töötavad nii Loopi sees kui ka väljaspool seda ning kombinatsioonid annavad täieliku kontrolli sisu väljundi üle.

Teema stiilileht

style.css täidab kahte rolli. Esiteks tuvastamine: faili päris alguses olev päis ütleb WordPressile teema nime, autori, versiooni ja litsentsi. Teiseks visuaal: kõik CSS-reeglid, mis juhivad saidi välimust. Tavaline päis näeb välja selline:

1/*
2Theme Name: Theme Name
3Theme URI: https://www.example.com/theme
4Author: Your Name
5Author URI: https://www.example.com/
6Description: Responsive WordPress theme with support for...
7Version: 1.0
8License: GNU General Public License v2 or later
9License URI: http://www.gnu.org/licenses/gpl-2.0.html
10Tags: responsive, two-columns, right-sidebar, custom-header
11Text Domain: mythemename
12*/

Parimad tavad style.css failiga töötamisel:

  • Järgi WordPressi CSS-i kodeerimisstandardeid, ühtlane stiil lihtsustab hooldust.
  • Valideeri CSS W3C validaatori kaudu.
  • Minifitseeri CSS toodangus, kuid hoia arenduseks loetav lähtefail alles.
  • Lisa prindistiilid (@media print), paljud lugejad prindivad artikleid.
  • Stiili kõiki standardseid HTML-elemente, mis võivad postituse sisus esineda.

WordPressi mallihierarhia

Iga päringu puhul otsustab WordPress ise, millise teema PHP-faili kaasata, see ongi mallihierarhia. Üks reegel: kõige spetsiifilisemast failist kõige üldisemani, kusjuures index.php on iga haru viimane varuvariant. Selle järjekorra tundmine kõrvaldab küsimuse „miks mu single.php muudatus kategoorialehel ei kajastu".

1Single post → single-{post_type}-{slug}.php → single-{post_type}.php → single.php → singular.php → index.php
2Page → {template from editor}.php → page-{slug}.php → page-{id}.php → page.php → singular.php → index.php
3Category → category-{slug}.php → category-{id}.php → category.php → archive.php → index.php
4Archive → archive-{post_type}.php → archive.php → index.php
5Search → search.php → index.php
6404 error → 404.php → index.php
7Front page → front-page.php → home.php → index.php

WordPress võtab esimese olemasoleva faili vasakult paremale. Seega single-product.php kirjutab single.php üle ainult product postitüübi kirjete puhul, jättes ülejäänud puutumata.

Konksud: tegevused ja filtrid

Konksud on WordPressi laienduspunktid: need võimaldavad haakuda tuumfunktsionaalsuse külge ilma selle faile muutmata. Tegevused sooritavad kõrvalefekti (skripti järjekorda panemine, e-kirja saatmine), filtrid võtavad vastu väärtuse, muudavad seda ja peavad selle tagastama. Unustatud return filtris on tühja sisu kõige levinum põhjus.

1// Registration
2add_action( 'hook_name', 'callback', 10, 1 ); // priority, number of arguments
3add_filter( 'hook_name', 'callback', 10, 1 );
4
5// Execution (in core or your code)
6do_action( 'hook_name', $arg ); // action: returns nothing
7apply_filters( 'hook_name', $value, $arg ); // filter: RETURNS value
8
9// Removal (priority must match the one used when adding)
10remove_action( 'hook_name', 'callback', 10 );

Näide, lõigu lisamine iga postituse lõppu:

1add_filter( 'the_content', 'my_append_note', 20 );
2function my_append_note( $content ) {
3 return $content . '<p>Thanks for reading!</p>'; // without return content disappears
4}

Peamised teemakonksud:

  • after_setup_theme, funktsionaalsuse toe registreerimine (add_theme_support()), menüüd, pisipiltide suurused.
  • wp_enqueue_scripts, ainus õige koht frontendi CSS-i ja JS-i järjekorda panemiseks.
  • init, varajane initsialiseerimine: postitüüpide ja otseteede registreerimine.
  • the_content, postituse HTML-i filtreerimine enne väljundit.

Madalam prioriteet käivitub varem (vaikimisi 10). Selleks, et tagasikutse saaks rohkem kui ühe argumendi, suurenda neljandat accepted_args parameetrit.

Tingimuslikud sildid

Tingimuslikud sildid on funktsioonid, mis tagastavad true või false sõltuvalt sellest, milline leht on parasjagu avatud. Need ehitavad üles loogika „näita siin külgriba, aga mitte 404 lehel".

1is_home() // blog post feed
2is_front_page() // site front page
3is_single() // single post
4is_page() // single page
5is_singular() // any single post/page/CPT
6is_archive() // any archive
7is_category() // category archive
8is_search() // search results page
9is_404() // 404 error page
10is_user_logged_in() // user is logged in
11is_admin() // request is in admin (NOT "user is administrator")

Peamine lõks: päringu tingimuslikud sildid (is_single, is_page, is_home ja teised) töötavad alles pärast põhipäringu moodustamist, see tähendab mallifailides ja Loopis või alates template_redirect konksust. Nende varajane väljakutsumine failis functions.php või init konksul on liiga vara: WordPress väljastab _doing_it_wrong() ja tagastab vale tulemuse. Erandid on is_admin() ja is_user_logged_in(), need ei sõltu päringust ja on varem saadaval. Ja pea meeles: is_admin() kontrollib konteksti (admin vs frontend), mitte rolli; rolli jaoks kasuta current_user_can( 'manage_options' ).

Skriptide ja stiilide järjekorda panemine

Kiusatus kirjutada <link> ja <script> otse header.php faili on suur, kuid see on viga: kaotad sõltuvuste halduse, versioonimise vahemälu tühjendamiseks, defer/async strateegiad ja kaitse topeltlaadimise vastu (kaks pluginat võivad kergesti jQuery kaks korda järjekorda panna). Õige tee on WordPressi järjekord wp_enqueue_scripts konksul.

1add_action( 'wp_enqueue_scripts', 'my_theme_assets' );
2function my_theme_assets() {
3 // Theme style with version from style.css header
4 wp_enqueue_style(
5 'my-theme',
6 get_stylesheet_uri(),
7 array(),
8 wp_get_theme()->get( 'Version' )
9 );
10
11 // Script with dependency and modern syntax (WP 6.3+)
12 wp_enqueue_script(
13 'my-app',
14 get_theme_file_uri( 'assets/js/app.js' ),
15 array( 'jquery' ), // dependencies
16 '1.0.0', // version → cache busting
17 array(
18 'in_footer' => true,
19 'strategy' => 'defer',
20 )
21 );
22}

Alates WordPress 6.3 on wp_enqueue_script() viimane parameeter $args massiiv (in_footer, strategy), kuigi vana vorm tõeväärtusega true jaluse jaoks töötab endiselt. Frontendi jaoks kasuta wp_enqueue_scripts, admini jaoks admin_enqueue_scripts, sisselogimislehe jaoks login_enqueue_scripts.

Otseteed

Otseteed muudavad nurksulgudes oleva lühikese kirje suvaliseks HTML-iks, mis on mugav nuppude, galeriide ja vormide jaoks sisu sees. Töötleja peab tagastama sõne, mitte väljastama seda echo kaudu, vastasel juhul „hüppab" tulemus lehe algusesse.

1add_shortcode( 'btn', 'my_button_shortcode' );
2function my_button_shortcode( $atts, $content = null, $tag = '' ) {
3 $a = shortcode_atts(
4 array( 'url' => '#', 'label' => 'Button' ),
5 $atts,
6 $tag
7 );
8 return sprintf(
9 '<a class="btn" href="%s">%s</a>',
10 esc_url( $a['url'] ), // escape on output
11 esc_html( $a['label'] )
12 );
13}
14// Usage in post: [btn url="https://example.com" label="Buy"]

shortcode_atts() asetab kasutaja atribuudid vaikeväärtuste peale. Kui sul on vaja käivitada otseteid sõne või malli sees, mähi see do_shortcode() sisse, kuid oma funktsiooni väljakutsumiseks kutsu seda otse, ilma vahendajata.

WP_Query ja kohandatud päringud

WP_Query on klass igasuguste postituste valikute jaoks: viimased uudised külgribal, kategooria kogum, kohandatud postitüübi voog. Pärast oma tsüklit kutsu alati välja wp_reset_postdata(), vastasel juhul saavad lehe allpool olevad mallisildid vale postituse.

1$q = new WP_Query( array(
2 'post_type' => 'post',
3 'posts_per_page' => 5,
4 'category_name' => 'news',
5 'orderby' => 'date',
6 'order' => 'DESC',
7) );
8
9if ( $q->have_posts() ) {
10 while ( $q->have_posts() ) {
11 $q->the_post();
12 the_title( '<h3>', '</h3>' );
13 }
14 wp_reset_postdata(); // restore global $post
15}

Põhilehe päringu muutmiseks (näiteks postituste arv esilehel) ära kasuta aegunud query_posts(), see käivitab täiendava andmebaasipäringu ja lõhub lehekülgedeks jagamise. Õige lähenemine on pre_get_posts konks, mis muudab päringut enne selle täitmist:

1add_action( 'pre_get_posts', 'my_main_query' );
2function my_main_query( $query ) {
3 if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
4 $query->set( 'posts_per_page', 12 );
5 }
6}

Turvalisus: põgenemine ja puhastamine

WordPressi kuldreegel: puhasta sisendil, põgene väljundil, valideeri igal pool. Kõik kasutajaandmed puhastatakse enne andmebaasi salvestamist ja põgenetakse enne HTML-is väljastamist, isegi kui need on juba puhastatud.

1// Escaping ON OUTPUT
2echo esc_html( $text ); // text inside tag
3echo esc_attr( $value ); // attribute value
4echo esc_url( $href ); // href/src links
5echo wp_kses_post( $rich_html ); // safe HTML set for content
6
7// Sanitization ON INPUT (before writing to DB)
8$clean = sanitize_text_field( $_POST['name'] );
9$email = sanitize_email( $_POST['email'] );
10$num = absint( $_POST['count'] );

Kaitse vorme ja tegevusi nonce'ide ehk ühekordsete CSRF-tõrjetokenitega:

1// In form:
2wp_nonce_field( 'my_save_action', 'my_nonce' );
3
4// During processing:
5if ( ! isset( $_POST['my_nonce'] ) ||
6 ! wp_verify_nonce( $_POST['my_nonce'], 'my_save_action' ) ) {
7 return; // request rejected
8}

Praktikas on enamik teemade ja pluginatega seotud turvaauke just väljundpõgenemise unustamine. Tee sellest harjumus: ükski muutuja ei lähe HTML-i ilma esc_*-ta.

WordPressi REST API

REST API tagastab saidi andmed JSON-vormingus, seda kasutavad mobiilirakendused, eraldiseisvad esiotsad ja integratsioonid. Baasaadress on /wp-json/wp/v2/.

1GET /wp-json/wp/v2/posts // posts
2GET /wp-json/wp/v2/pages // pages
3GET /wp-json/wp/v2/media // media files
4GET /wp-json/wp/v2/users // users
5GET /wp-json/wp/v2/posts/123 // single post
6GET /wp-json/wp/v2/posts?per_page=5&search=theme&_embed

Kohandatud marsruudid registreeritakse rest_api_init konksul. Parameeter permission_callback on kohustuslik, ilma selleta annab WordPress hoiatuse; avaliku lugemise jaoks kasuta '__return_true'.

1add_action( 'rest_api_init', function () {
2 register_rest_route( 'myplugin/v1', '/items/(?P<id>\d+)', array(
3 'methods' => 'GET',
4 'callback' => 'my_get_item',
5 'permission_callback' => '__return_true',
6 ) );
7} );

WP-CLI: käsud käepärast

WP-CLI haldab saiti terminalist, see on kiirem ja usaldusväärsem kui administraatoriliideses klõpsimine, eriti mitme saidi hooldamisel. Levinumad käsud:

1wp core update # update WordPress core
2wp core version # what version is installed
3wp plugin install akismet --activate # install and activate plugin
4wp plugin list # plugin list with status and version
5wp theme activate twentytwentyfive # switch active theme
6wp db export backup.sql # database dump to file
7wp search-replace 'old.com' 'new.com' --dry-run # always dry run first
8wp user create bob [email protected] --role=editor # create user
9wp cache flush # flush object cache

wp search-replace mõistab serialiseeritud andmeid, seega muudab see saidi migreerimisel domeeni ohutult, erinevalt otsesest SQL-päringust, mis lõhub serialiseeringu. Enne iga ohtlikku toimingut tee wp db export.

Klassikalised ja plokiteemad 2026. aastal

  1. aasta keskpaigaks (praegune versioon: WordPress 7.0 "Armstrong", soovitatav PHP 8.3+) on klassikalised PHP-teemad endiselt täielikult toetatud ja jäävad kõige levinumaks tüübiks. Kuid kogu uus tuumiktööriistastik arendab plokiteemasid ja täielikku saidiredigeerimist (Full Site Editing): theme.json osa functions.php seadete asemel, HTML-mallid PHP asemel. Loop, bloginfo(), tingimuslikud sildid ja konksud jäävad asjakohaseks hübriidteemades ja mis tahes PHP-fragmentides FSE-teemade sees, nii et see spikker ei kaota oma väärtust. Praktiline tee 2026. aastal on klassikaline vundament pluss sihitud plokitugi seal, kus seda tegelikult vaja on.

⁉️🤔 Korduma kippuvad küsimused

Kas kõigi 13 faili loomine teema jaoks on kohustuslik?

Ei, minimaalne töötav teema on index.php + style.css. Kuid täisfunktsionaalse saidi puhul on parem hoida täiskomplekti: iga fail annab WordPressile võimaluse valida optimaalne mall. Näiteks ilma single.php-ta renderdatakse postitus läbi index.php ja see kaotab kommentaaride ploki.

Mis vahe on get_bloginfo() ja bloginfo() vahel?

bloginfo() väljastab väärtuse kohe ekraanile (echo). get_bloginfo() tagastab stringi muutujasse, sa saad seda töödelda, sellele lisada või kasutada seda mõne teise avaldise sees enne tegelikku väljastamist.

Kuhu paigutada Loop, kui lehel on mitu sisutüüpi?

Loopi saab käivitada mitu korda. Tüüpiline stsenaarium: üks Loop peamise postituste loendi jaoks, teine „viimaste uudiste" vidina jaoks külgribal. Enne teist Loopi lähtesta pointer wp_reset_postdata() abil, vastasel juhul saab lehe järgmine kood vale postituse konteksti.

Kas see spikker töötab plokiteemade (FSE) puhul?

Osaliselt. Plokiteemad (Full Site Editing) kasutavad paljude seadete jaoks theme.json-it functions.php asemel ning malle HTML-is, mitte PHP-s. Kuid Loop, bloginfo() ja kaasamise sildid jäävad asjakohaseks hübriidteemade ja kõigi FSE teemade sees olevate PHP mallide jaoks.

Mida teha, kui functions.php muutub liiga suureks?

Jaga loogika eraldi failidesse ja kaasa need functions.php-st require_once või include abil. Näiteks: require_once get_template_directory() . '/inc/custom-post-types.php';. See parandab loetavust ja lihtsustab hooldust, see on parim tava iga teema puhul, millel on üle 20-30 konksu.

Mis vahe on action ja filter vahel?

Action sooritab kõrvaltoime ja ei tagasta midagi (skripti järjekorda panemine, e-kirja saatmine). Filter võtab vastu väärtuse, muudab seda ja peab selle tagastama, unustatud return filtris nullib sisu. Need registreeritakse identselt: add_action() ja add_filter().

Miks is_single() ei tööta failis functions.php?

Päringu tingimuslikud sildid on saadaval alles pärast peamise päringu moodustamist, see tähendab mallifailides või alates template_redirect konksust. functions.php alguses ei ole päring veel valmis, seega WordPress annab veateate _doing_it_wrong(). Ainult is_admin() ja is_user_logged_in() töötavad ilma päringu sõltuvuseta.

Mida WordPressiga arendades käepärast hoida

See spikker on raamistik, millest WordPressi arendus algab. Teemafailid ja mallide hierarhia, Loop, kaasamise sildid ja bloginfo() panevad teema kokku, samas kui konksud ja filtrid, tingimuslikud sildid, skriptide järjekorda panemine, lühikoodid, WP_Query, escaping, REST API ja WP-CLI katavad valdava osa rutiinsetest ülesannetest. Ülejäänu on praktika ja dokumentatsioon.

Põhjalikumaks õppeks on teemaarenduse käsiraamat saidil developer.wordpress.org esimene aadress. Seal on ka malli siltide viide koos sadade funktsioonidega igaks juhuks. Kui lähed HTML paigutusest valmis teema juurde, alusta samm-sammulisest juhendist WordPressi teema loomiseks HTML-ist, kus Loopi ja silte selgitatakse lahingu kontekstis, alates paigutusest kuni töötava teemani.

Lisa see spikker järjehoidjatesse ja hoia seda arenduse ajal käepärast.

Millist silti või konksu sa kõige sagedamini üles otsid? Kirjuta kommentaaridesse, millise WordPressi ülesandega kokku puutusid ja jaga oma kasutusjuhtu, elav kogemuste vahetamine on väärt tosinat ametlikku juhendit.