user

Back to Post List

Udhëzues bazë për skedarin functions.php të WordPress



Posted on


Hostinkos ofron hosting, domenët dhe mjetet që ju nevojiten për webfaqen e biznesit tuaj.


Nëse keni filluar të ndërtoni temën (ang. theme) tuaj, ose ndoshta edhe të krijoni një temë child për të personalizuar një temë tjetër, atëherë do të keni mësuar gjithçka rreth skedarëve të template-it dhe hierarkisë së template-it të temës. Por ç’të themi për skedarin e temës functions.php?

Skedari i funksioneve functions.php është vendi ku vendosni të gjithë funksionalitetin që ka nevojë për temën tuaj që nuk ka të bëjë vetëm me një template, kështu që nuk është kodi që nxjerr vetëm një lloj përmbajtjeje ose përmbajtje në vetëm një vend në faqe, si p.sh. shiriti anësor (ang. sidebar) ose fundi i faqes (ang. footer).

Skedari i funksioneve sillet si një shtojcë WordPress, duke shtuar veçori dhe funksionalitet në një webfaqe të WordPress. Mund ta përdorni për të thirrur funksione, si PHP ashtu edhe ‘built-in WordPress’, dhe për të përcaktuar funksionet tuaja. Ju mund të prodhoni të njëjtat rezultate duke shtuar kod në një plugin WordPress ose përmes skedarit të funksioneve të WordPress Theme.

Nëse keni shumë kod funksional që duhet të përdorni në webfaqen tuaj, ose dëshironi që ai kod të vazhdojë të funksionojë nëse ndryshoni temat, atëherë duhet ta vendosni atë në një shtojcë. Por nëse ai kod është i varur nga tema, atëherë functions.php është vendi i duhur për ta vendosur atë. Rregulli i përgjithshëm është:

Përdorni functions.php kur duhet të shtoni funksionalitete të thjeshta në lidhje me mënyrën se si shfaqet përmbajtja juaj (d.m.th. nuk do të funksionojë pa aktivizuar temën tuaj). Kjo mund të përfshijë shtimin e fonteve shtesë, për shembull.

Në këtë postim, do t’ju tregojmë disa nga përdorimet e functions.php dhe do t’ju tregojmë se si të shtoni kod në të dhe si ta aktivizoni atë kod.

Përdorime të zakonshme për skedarin e funksioneve

Duke pasur parasysh se skedari i funksioneve është për kodin që varet nga tema (d.m.th. që do të humbet nëse ndërroni temat), ka disa shembuj specifik kur shtimi i kodit në të është veçanërisht i dobishëm. Kjo perfshin:

  • Shtimi i përkrahjes për temat, për shembull për imazhet e paraqitura, formatet e postimeve dhe lidhjet RSS
  • Tregoni WordPress-it se ku është skedari i përkthimit të temës
  • Regjistrimi i vendndodhjeve për menutë e navigimit, në mënyrë që përdoruesit të mund të shtojnë menu përmes faqes së administratorit të mënyve
  • Shtimi, heqja ose anashkalimi i funksionalitetit nga një parent theme, duke përdorur një child theme

Në këtë postim, do t’ju tregojmë se si t’i bëni secilën prej këtyre gjërave. Pra, le të shohim se si mund të punoni me functions.php dhe si i shtoni disa nga funksionet më të zakonshme në të.

Krijimi i një skedari funksionesh

Nëse tema juaj nuk ka tashmë një skedar funksionesh, do t’ju duhet të krijoni një të tillë. Krijoni një skedar të ri në drejtorinë kryesore të temës dhe quani atë functions.php.

Ju do të duhet të shtoni një tag PHP hapës në skedar, por nuk keni nevojë për një mbyllje:

<?php

Skedari juaj i funksioneve tani është gati që ju të shtoni kodin tuaj. Dikush priret të shtoj blloqe të mëdha tekstesh të komenteve përpara çdo seksioni, kështu që mund ta gjeni lehtësisht kodin përsëri. Diçka si kjo:

/**************************************************** **********************
my_function - rresht i shkurtër që përshkruan atë që bën
************************************************** **************************/

Shtuarja e kodit që përdoret zakonisht në functions.php

Le të hedhim një vështrim në disa nga përdorimet më të zakonshme të skedarit të funksioneve dhe si t’i kodojmë ato.

Shtimi i përkrahjes për temën

Ka disa veçori në WordPress për të cilat duhet të shtoni përkrahje për temën që tema juaj të mund të përfitoj prej tyre. Këto janë:

  • Formatet e postimit – formate të ngjashme me tumblr si standarde, video dhe citime
  • Thumbnails të postimit – të njohura gjithashtu si imazhe të veçuara. Nëse dëshironi t’i shfaqni këto në temën tuaj, do t’ju duhet gjithashtu të shtoni kodin për t’i nxjerrë ato në skedarët tuaj të template-it, por ato nuk do të jenë të disponueshme në ekranet e administratorit nëse nuk shtoni përkrahje teme për to
  • Një sfond (ang. background) i personalizuar – ju lejon juve (ose të tjerëve që përdorin temën tuaj) të personalizoni imazhin dhe ngjyrat e sfondit nëpërmjet personalizuesit (ang. customizer)
  • Një header i personalizuar – që funksionon në mënyrë të ngjashme me sfondin e personalizuar
  • Lidhjet e feed-it automatik – për RSS feed
  • HTML5 – për format e kërkimit, komentet, galerinë etj. Kjo nuk ndikon në aftësinë për të koduar temën tuaj duke përdorur HTML5, por ndërlidhet me kodin e krijuar nga WordPress
  • Tagu i titullit – kjo ju lejon të shtoni një etiketë titulli në <head> e faqeve tuaja për qëllime SEO dhe aksesueshmërie. Nuk do t’ju duhet kjo nëse keni një shtojcë SEO që e bën këtë për ju

Pra, për të shtuar përkrahjen e temave për formatet e postimeve, për shembull, përdorni funksionin add_theme_support() në skedarin tuaj të funksioneve si:

add_theme_support( 'post-formats' );

Disa nga veçoritë për të cilat shtoni përkrahje teme kanë parametra shtesë; për shembull, mund të specifikoni formatet e postimit që dëshironi të përdorni kur shtoni përkrahje për to:

add_theme_support( 'post-formats', array( 'aside', 'quote' ) );

Dhe për imazhet e paraqitura, mund të specifikoni se cilat lloje postimesh dëshironi të shtoni përkrahje për to:

add_theme_support( 'post-thumbnails', array( 'post', 'page' ) );

Por asnjë nga këto nuk do të funksionojë nëse nuk e vendosni kodin tuaj brenda një funksioni që më pas e lidhni me ‘hook’ të duhur, që është after_setup_theme action hook. Ju mund t’i shtoni të gjitha funksionet tuaja add_theme_support() brenda një funksioni më të madh, të cilin më pas e lidhni me after_setup_theme. Pra, nëse doni të shtoni përkrahje për temat për fotografitë e postimeve, formatet e postimeve, HTML5 dhe lidhjet feed automatike, ju e shtoni këtë në skedarin tuaj të funksioneve:

/**********************************************************************************
wpmu_theme_support - adds theme support for post formats, post thumbnails, HTML5 and automatic feed links
**********************************************************************************/
function wpmu_theme_support() {

/* post formats */
add_theme_support( 'post-formats', array( 'aside', 'quote' ) );

/* post thumbnails */
add_theme_support( 'post-thumbnails', array( 'post', 'page' ) );

/* HTML5 */
add_theme_support( 'html5' );

/* automatic feed links */
add_theme_support( 'automatic-feed-links' );

}
add_action( 'after_setup_theme', 'wpmu_theme_support' );

Vini re se kemi shtuar tekst të komentuar mbi çdo artikull për të cilin kemi shtuar përkrahje për temën, kështu që nëse dikush tjetër kthehet te skedari më vonë, do të jetë e lehtë të shihet se çfarë po ndodh.

Shtimi i një skedari përkthimi

Nëse njerëzit që nuk flasin gjuhën tuaj ka të ngjarë të punojnë në webfaqen tuaj ose të përdorin temën tuaj, është praktikë e mirë ta bëni gati përkthimin e temës tuaj. Kjo nuk ndikon në pjesën e përparme (ang. front end) të webfaqes tuaj që shohin vizitorët, por pamjen e administratorit që do të shohin përdoruesit tuaj. Përkthimi do të thotë që çdo tekst që shtoni në pamjet e administratorit nëpërmjet temës suaj do të përkthehet duke përdorur një skedar përkthimi.

Ju i tregoni WordPress se ku është skedari i përkthimit të temës duke përdorur funksionin load_theme_textdomain() në skedarin tuaj të funksioneve, si në vazhdim:

function wpmu_translation() {
load_child_theme_textdomain( 'wpmu-theme', get_stylesheet_directory() . '/languages' );
}
add_action( 'after_setup_theme', 'wpmu_translation' );

Kjo përdor funksionin get_template_directory() për të gjetur drejtorinë e temës dhe më pas kërkon një skedar që fillon me wpmu-theme në nëndrejtorinë e gjuhëve, kështu që shtegu do të jetë wp-content/themes/mytheme/languages/ dhe filename i skedarit të gjuhëve do të fillojë me temën wpmu e ndjekur nga një kod për gjuhën.

Nëse të duhet të bësh gati përkthimin e temës, do të duhet të bësh më shumë sesa thjesht të ngarkosh këtë kod.

Regjistrimi i menyve të navigimit

Diçka tjetër që bëni në skedarin tuaj të funksioneve është regjistrimi i vendndodhjeve për menytë e navigimit. Nëse jeni mësuar të punoni me tema të palëve të treta, do të keni parë se shumë prej tyre kanë një kuti të kontrollit Primar Navigation që mund ta zgjidhni në pamjen e administratorit të Mënyve, duke ju lejuar të shtoni menynë që krijoni në atë vendndodhje në temë. Nëse dëshironi që përdoruesit të jenë në gjendje ta bëjnë këtë në temën tuaj, atëherë do t’ju duhet të përdorni funksionin e regjistrimit nav menus():

function wpmu_nav_menus() {

register_nav_menus( array(
'primary' => __( 'Primary Navigation', 'wpmu-theme' ),
) );

}
add_action( 'after_setup_theme', 'wpmu_nav_menus' );

Kjo regjistron një vendndodhje të menysë, që do të shfaqet në ekranin e administratorit si Primary Navigation, dhe ID-ja e së cilës është parësore. Më pas përdorni atë ID për të nxjerrë menynë në skedarin header.php të temës suaj.

Vini re se këtu është bërë gati përkthimi i emrit të menysë në kodin e mësipërm, kështu që kushdo që përdor temën që punon në një gjuhë të ndryshme nga anglishtja, do ta ketë tekstin e “Primary Navigation” të përkthyer për ta duke përdorur skedarin e përkthimit.

Ju gjithashtu mund ta përdorni këtë funksion për të regjistruar vendndodhje të shumta të menysë së navigimit. Kodi më poshtë regjistron një primary menu, plus një shtesë në sidebar:

function wpmu_nav_menus() {

register_nav_menus( array(
'primary' => __( 'Primary Navigation', 'wpmu-theme' ),
'sidebar' => __( 'Sidebar Navigation', 'wpmu-theme' ),
) );

}
add_action( 'after_setup_theme', 'wpmu_nav_menus' );

Përsëri, do t’ju duhet të kodoni menynë në skedarin sidebar.php të temës suaj, duke përdorur funksionin wp_nav_menu().

Duke vendosur të gjitha së bashku

Ju do të ketë vërejtur se të gjitha funksionet që janë dhënë më sipër janë aktivizuar nëpërmjet të njëjtit hook veprimi: after_setup_theme. Kjo do të thotë që në vend që të shkruani një numër funksionesh të veçanta, mund t’i shtoni të gjitha në një funksion në skedarin tuaj functions.php dhe më pas ta aktivizoni atë duke përdorur hook të veprimit.

Ju do të kishin një funksion të madh:

/**********************************************************************************
wpmu_theme_setup - sets up themes
- adds theme support for post formats, post thumbnails, HTML5 and automatic feed links
- registers a translation file
- registers navigation menus
**********************************************************************************/
function wpmu_theme_setup() {

/*******************************
Start by adding theme support
*******************************/

/* post formats */
add_theme_support( 'post-formats', array( 'aside', 'quote' ) );

/* post thumbnails */
add_theme_support( 'post-thumbnails', array( 'post', 'page' ) );

/* HTML5 */
add_theme_support( 'html5' );

/* automatic feed links */
add_theme_support( 'automatic-feed-links' );

/*******************************
Translation file
*******************************/
load_child_theme_textdomain( 'wpmu-theme', get_stylesheet_directory() . '/languages' );

/*******************************
Navigation menus
*******************************/
register_nav_menus( array(
'primary' => __( 'Primary Navigation', 'wpmu-theme' ),
'sidebar' => __( 'Sidebar Navigation', 'wpmu-theme' ),
) );

}
add_action( 'after_setup_theme', 'wpmu_theme_support' );

Përfshirja e skedarëve

Ndonjëherë do të zbuloni se skedari juaj i funksioneve bëhet më i madh se sa mund të menaxhoni me lehtësi dhe ka blloqe kodi që dëshironi t’i mbani të ndara. Nëse kjo ndodh, është mirë të krijoni skedarë të veçantë, të quajtur skedarë të përfshirë, për atë kod dhe më pas t’i thërrisni ato nga skedari juaj i funksioneve.

Krijoni një dosje në temën tuaj të quajtur includes dhe më pas krijoni një skedar të ri php për çdo bllok kodi që dëshironi të ndani. Pra, nëse dëshironi të zhvendosni konfigurimin e temës në një skedar tjetër, për shembull, e zhvendosni të gjithë kodin e mësipërm në një skedar të quajtur theme_setup.php dhe më pas e thërrisni në skedarin e funksioneve:

include( get_stylesheet_directory() . '/includes/theme_setup.php' );

Kjo thërret kodin në skedarin e përfshirjes dhe e ekzekuton atë në vendin në skedarin e funksioneve ku është shtuar funksionini include(). Dikush është i prirur të vendos të gjitha përfshirjet në fillim të skedarit të funksioneve, në mënyrë që të jenë të lehta për t’i gjetur.

Puna me temat Parent dhe Child

Skedari i funksioneve mund të jetë shumë i fuqishëm kur jeni duke punuar me temat Parnet dhe Child. Në një temë Child, mund të përdorni skedarin e funksioneve për të anashkaluar ose larguar funksionet nga tema kryesore ose për të shtuar të rejat tuaja.

Ka tre mënyra për të mbishkruar ose shtuar funksione në një temë Child:

  • Krijoni një version të ri të një funksioni pluggable.
  • Çaktivizoni një funksion nga tema Parent.
  • Shtoni funksionin tuaj, duke përdorur përparësinë për të mbishkruar funksionin e temës Parent.

Le të hedhim një vështrim të shpejtë në secilën prej tyre me radhë.

Funksionet pluggable

Nëse jeni duke punuar me një temë Parent të koduar mirë ose një theme framework që është krijuar për t’u përdorur si një temë Parent, atëherë shanset janë që funksionet në skedarin e funksioneve të tij të mund të mbyllen.

Ju mund të dalloni lehtësisht një temë pluggable, sepse ajo do të mbështillet në një tag të kushtëzuar për të kontrolluar nëse ai funksion ekziston tashmë, si kjo:

<?php
if ( ! function_exists ( 'my_function' ) ) {
function my_function() {
// Contents of your function here.
}
}
?>

Për shkak se funksionet nga tema Child ekzekutohen përpara atyre nga Parent, kjo do të thotë që nëse krijoni një funksion me të njëjtin emër në temën Child, atëherë WordPress nuk do ta ekzekutojë atë nga tema Parent. Pra, për të anashkaluar temën Parent, thjesht krijoni funksionin tuaj me të njëjtin emër në skedarin e funksioneve të temës suaj Child.

Funksionet e çaktivizimit

Për të çaktivizuar një funksion, ju e bëni unhook atë me të cilin është bashkangjitur. Pra, nëse tema juaj prind ka një funksion të quajtur parent_function() i cili aktivizohet nëpërmjet init hook, ju e çaktivizoni atë në temën tuaj Child si kjo:

remove_action( 'init', 'parent_function' );

Kjo do të thotë që funksioni Parent nuk do të funksionojë më. Më pas mund të shkruani një funksion të ri nëse dëshironi funksionalitete të ndryshme në temën tuaj Child.

Përdorimi i përparësisë së funksionit

Opsioni përfundimtar është të krijoni një funksion të ri me një prioritet më të lartë se funksioni që dëshironi të anashkaloni, që do të thotë se do të funksionojë pas atij funksioni. Ju duhet ta bëni këtë sepse si parazgjedhje WordPress do të ekzekutojë së pari funksionet nga tema juaj Child; vetëm duke shtuar një numër prioritar mund ta ndryshoni këtë.

Pra, le të themi se tema juaj Parent ka një funksion të quajtur parent_function(), i cili aktivizohet nëpërmjet init hook me prioritet 20:

function parent_function() {
// Contents for your function here.
}
add_action( 'init', 'parent_function', 20 );

Ju mund të shkruani një funksion që e kapërcen atë dhe më pas t’ia bashkëngjitni në init hook me një prioritet më të lartë, si p.sh. 30:

function child_function() {
// Contents for your function here.
}
add_action( 'init', 'child_function', 30 );

Skedari i funksioneve është miku juaj

Skedari i funksioneve të temës funksionon në një mënyrë shumë të ngjashme me një shtojcë, por është specifike për temën tuaj. Kështu që duhet ta përdorni vetëm për të shtuar funksionalitet që nuk dëshironi të humbni nëse ndërroni temat më vonë, ose që nuk dëshironi t’i përdorni në një webfaqe tjetër. Në këtë postim ju keni mësuar se për çfarë përdoret skedari i funksioneve, si dhe si të zbatoni disa nga ato përdorime. Trajtoni skedarin tuaj të funksioneve me kujdes, shmangni përdorimin e tij në vend të një shtojceje dhe do t’ju ndihmojë me zhvillimin e temës suaj!

Hostinkos

Hostinkos

Gjithçka që ju duhet për webfaqen e biznesit, përfshirë hostimin, domenët dhe ndërtimin e një webfaqe profesionale të kualitetit të lartë. Ne menaxhojmë çdo aspekt të dizajnit të webfaqes, SEO, web hosting dhe mirëmbajtjes teknike, dhe ofrojmë Ekipin më të mirë përkrahës!



Back to Post List