WordPress – útmutató a functions.php fájlba illeszthető kódrészletekhez

A WordPress webhellyel kapcsolatos problémánkra azt a tanácsot kaptuk/olvastuk az interneten, hogy tegyünk be egy kódrészletet a sablonunk functions.php fájljába. Pontosan hova és hogyan kell beilleszteni, és mennyire biztonságos ez?

TLDR;

Ha nem érdekelnek a részletek, csak az, hogy hogyan kell beilleszteni a kódrészleteket, akkor íme:
1. A WP-Admin felületen menj ide: Megjelenés > Sablonszerkesztő.
2. Ha megjelenik egy figyelmeztető üzenet, kattints az “Oké, megértettem” gombra.
3. A jobb oldalsávban kattints a functions.php fájlra.
4. Görgess le a fájl aljához, és illeszd be a kódot. Ha szerepel a fájl végén a záró ?> tag, akkor az elé, ha nem szerepel, akkor simán a fájl végére.
5. Kattints a “Fájl módosítása” gombra az oldal alján.

Fontos: ha frissíted a sablont, akkor ez a módosítás el fog veszni. Olvasd el a teljes cikket, hogy megtudd, hogyan lehet ezt elkerülni!

Milyen kódrészletekről van szó?

WordPress weboldal esetén bizonyos funkciók könnyen megoldhatóak rövid kódrészletekkel (“snippetekkel“), amikkel kiválthatunk egy-egy bővítményt – a legtöbb esetben jobban járunk, ha a kódrészletet használjuk, főleg ha a bővítmény a keresett funkció mellett sok más, számunkra feleseleges lehetőséget is tartalmaz.

A functions.php fájlba illesztett kódrészletekkel többek közt a következő funkciókat lehet elérni:

  • Kommentek kikapcsolása
  • Alapból letiltott fájlformátumok feltöltésének engedélyezése (pl. SVG, webp)
  • Admin menüpontok elrejtése
  • A blokk alapú szerkesztő (Gutenberg) kikapcsolása
  • Átirányítás bejelentkezés után
  • Stb.

Pontosan hova kell helyezni a kódot?

A leggyakrabban az aktív sablon könyvtárában található functions.php fájlba bemásolandó kódrészleteket fogunk találni az interneten. A különböző WordPress-hez való kódrészleteket néha a wp-config.php fájlba, vagy a .htaccess fájlba, vagy máshova kell beilleszteni, de ebben a cikkben csak a functions.php-ba, vagy esetleg egyéni bővítménybe illesztendő kódokra fókuszálunk.

Az aktív sablonba

A functions.php-ba helyezhető kódokat a fájl végére kell beilleszteni, de még a záró ?> tag elé, ha van ilyen tag a fájl alján. A fájl szerkesztéséhez használhatjuk a WordPress saját sablonszerkesztőjét (Megjelenés > Sablonszerkesztő), vagy FTP klienst (a fájl elérési útvonala: /wp-content/themes/aktiv-sablon-neve/functions.php), vagy a tárhelyszolgáltató fájlkezelőjét is. A fájl szerkesztése előtt erősen ajánlott biztonsági másolatot készíteni róla.

Figyelem

A sablon frissítésekor a fent leírt módon véghezvitt módosítások el fognak veszni. Ezt a módszert csak akkor használjuk, ha egyéni sablont használunk, amihez nem fognak kiadni a fejlesztők frissítéseket.

Származtatott sablonba

Mivel a sablon frissítésekor el fog tűnni a plusz kód, amit a functions.php-ba beillesztettünk, ezért jobb, ha származtatott sablont használunk (child theme), és annak a functions.php fájljába illesztjük be a kódokat. A folyamat ugyanaz, mint ha az eredeti sablonba raknánk a kódot.

Származtatott sablont készíthetünk manuálisan, vagy egy plugin segítségével, pl.: Child Theme Configurator (a plugin a származtatott sablon létrehozása után kikapcsolható és törölhető).

Code Snippets bővítménybe

Több plugin is elérhető a WP.org bővítmény-tárban, amik kifejezetten a rövid kódrészletek kezelésére és beillesztésére valók. Ezek közül a legnépszerűbb a Code Snippets plugin, ezzel a WP admin felületéről hozzáadhatunk kódokat, amiket ki-be kapcsolhatunk, mint a bővítményeket.

Code Snippets plugin kezelőfelülete

Egyéni bővítménybe

A functions.php-ba illesztendő kódokat egy egyéni bővítménybe is rakhatjuk. Ha ezt a módszert választjuk, akkor a sablon váltása után is megmaradnak az extra funkciók az oldalon. Ha több különböző kódrészlethez több különböző egyéni plugint készítünk, akkor könnyen ki-be kapcsolhatjuk majd a funkciókat.

Egyéni bővítményt nagyon egyszerű készíteni, csak hozzunk létre egy új PHP fájlt a következő mappában: /wp-content/plugins/

A fájl neve lehet akármi, pl.:

/wp-content/plugins/egyeni-plugin.php

Rakhatjuk a fájlt egy új mappába is, hogy szervezettebb legyen:

/wp-content/plugins/egyeni-plugin/egyeni-plugin.php

A fájl tartalma a következő legyen:

<?php
/**
 * Plugin Name:       Egyéni Plugin Neve
 * Plugin URI:        https://w11.hu/wordpress-functions-php-kodreszletek
 * Description:       Egyéni plugin leírása.
 * Version:           1.11
 * Requires at least: 5.7
 * Requires PHP:      5.6
 * Author:            W11 Blog
 * Author URI:        https://w11.hu/
 * License:           GPL v2
 * License URI:       https://www.gnu.org/licenses/gpl-2.0.html
 * Text Domain:       egyeni-plugin
 * Domain Path:       /languages
 */

A fenti blokkban írjuk át a megfelelő adatokat, és alá illesszük be az egyéni kódrészleteinket. A fenti plugin adatokból a Plugin Name: sor kivételével az összes adat opcionális, és a fölösleges sorokat kitörölhetjük. Kész is az egyéni plugin!

Tipp

Minden, kódot tartalmazó mappába érdemes berakni egy teljesen üres (vagy maximum egy PHP nyitó tag-et és egy PHP kommentet tartalmazó) index.php fájlt. Ezzel elkerülhető, hogy a fájlok listáját illetéktelen felhasználók is elérjék, ugyanis bizonyos szerver-beállítások esetén a szerver automatikusan listázza egy könyvtár fájljait és alkönyvtárait, ha a könyvtárban nincs sem index.php, sem index.html fájl.
Ez leginkább csak akkor fontos, ha nem tudjuk milyen szerver környezetben fog futni a kódunk. Ha tudjuk, akkor győződjünk meg róla, hogy a könyvtárlistázási funkció ki van kapcsolva.

Kötelezően Használandó Bővítménybe

A kötelezően használandó bővítmények (avagy Must-use plugin, mu-plugin) ugyanúgy működnek, mint a “sima” bővítmények, két különbséggel:

  • Nem lehet őket kikapcsolni (“kötelezően használandó”).
  • Előbb lefutnak, mint a sima bővítmények, vagy a sablon.

Kötelezően használandó bővítményt ugyanúgy kell készíteni, mint egy normál bővítményt, csak a fájlt a /wp-content/mu-plugins/ mappában kell létrehozni.

Mindegy, hogy sablonba vagy bővítménybe illesztjük be a kódot?

Általában mindegy, hogy a fent felsorolt módszerek közül melyiket választjuk, de nem minden esetben.

Azokat a kódokat, amiket a functions.php-ba kell helyezni, lehet egyéni bővítménybe, vagy esetleg kötelezően használandó bővítménybe is rakni. Ez fordítva viszont nem feltétlenül igaz: bővítménybe való kódrészlet néha nem fog működni, ha a sablonba rakjuk, mivel a WordPress az alábbi sorrendben futtatja a kódokat, és időnként számít a sorrend:

  1. Kötelezően használandó bővítmények
  2. Bővítmények
  3. Származtatott sablon (ha van)
  4. (Szülő) sablon

A sorrend miatt a legbiztosabb megoldás, tehát ahol a legtöbb kódrészlet rendesen fog működni, az a kötelezően használandó bővítmény (mu-plugin).

Biztonságosak az ilyen kódrészletek?

Az, hogy mennyire biztonságos, attól függ, mennyire megbízható forrásból származik a kódrészletünk, de általánosságban elmondható, hogy az interneten fellelhető rövid kódrészletek túlnyomó többsége szimplán azt csinálja, ami oda van írva, és nem jelent biztonsági kockázatot.

Hol találhatóak ilyen kódrészletek?

Magyar nyelvű kódrészlet-gyűjtőoldal a PluginHelyett.hu.


A Szerzőről
Piller Balázs senior webfejlesztő, SEO specialista, és a WordPress szakértője. Számos sikeres projektben vett részt vezető fejlesztőként. Az általa írt kód jelenleg több mint 1 000 000 webhelyen fut.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük