Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • shtëpi
  • Interesante
  • Veprim i padëmshëm për php. PHP _SELF në atributin e veprimit të formës

Veprim i padëmshëm për php. PHP _SELF në atributin e veprimit të formës

Ne kemi krijuar bazën për një shtojcë të ardhshme që do të njihet nga sistemi WordPress. Sot ne do të ndryshojmë drejtpërdrejt funksionalitetin bazë të sistemit.

Një sistem i "grepave", "ngjarjeve" (veprimeve) dhe filtrave (filtrave) do të na ndihmojë për këtë. Këto tre koncepte janë baza e çdo shtojce WordPress.

grepa

Ekzistojnë dy lloje grepash në WordPress:

  • Action Hook: shënon një vend në kod që kryen një veprim specifik, për shembull, duhet të futni disa të dhëna dhe t'i ruani në bazën e të dhënave.
  • Filter Hook: shënon një filtër që do të ndryshojë një vlerë (ndryshore), në mënyrë që në të ardhmen kodi të përdorë vlerën e modifikuar.
Veprimet

Puna me ngjarje (veprime)

Logjika e përgjithshme për menaxhimin e ngjarjeve në WordPress është e thjeshtë:

  • Shënoni vendin ku duhet të kryhet veprimi duke përdorur një grep veprimi me parametrat e nevojshëm.
  • Krijo një funksion që do të kryejë veprimet e dëshiruara duke përdorur parametrat e kaluar nga grepi.
  • Regjistroni një ngjarje që do të ekzekutohet kur të ndizet grepi, me një prioritet specifik.
  • Kur WordPress ngarkon një faqe dhe gjen një goditje, sistemi do të ekzekutojë të gjitha funksionet që janë regjistruar në atë grep.
  • Për të përmbushur pikën e parë, sistemi ofron funksionin 'do_action':

    Veprimi_bëj($tag, $arg_1, $arg_2, ... , $arg_n);

    Ai merr argumentet e mëposhtme: $tag – emri i “hook”, $arg_1, $arg_2, ..., $arg_n – parametrat me të cilët do të thirret funksioni. Mund të ketë çdo numër argumentesh, ose 0.

    Vetë sistemi ka shumë grepa të përcaktuara tashmë:

    Bëj_aksion ("fillim");

    Ky është një shembull shumë i thjeshtë pa argumente shtesë. Kjo goditje aktivizohet kur pjesa më e madhe e sistemit është tashmë e konfiguruar dhe është koha për të krijuar objektet, kategoritë, postimet tuaja, etj.

    Bëj_action("ruaj_post", $post_id, $post);

    Në këtë shembull, fiksimi aktivizohet kur një postim ruhet me dy argumente post_id - identifikuesi i postimit dhe postimi - vetë postimi.

    Krijimi i grepave është i disponueshëm për çdo zhvillues për të krijuar shtojcën (ose temën) e vet. Falë kësaj, ne kemi një mjet të fuqishëm për të kontrolluar sjelljen e sistemit.

    Do_action ("my_truly_custom_hook");

    Pasi të kemi krijuar grepin dhe të kemi shkruar funksionin, duhet të regjistrojmë funksionin duke përdorur "add_action"

    Add_action($tag, $function_to_add, $priority, $accepted_args_number);

    Funksioni 'add_action' merr dy parametra të kërkuar: $tag: emrin e hook-it përkatës dhe $function_to_add: emrin e funksionit që do të thirret. Dy parametrat e tjerë janë opsionalë: $priority: një variabël numër i plotë që përcakton rendin në të cilin ekzekutohet funksioni (parazgjedhja është 10), $accepted_args_number: numri i argumenteve që funksioni pranon (parazgjedhja është 1).

    Le të shohim një shembull për të kuptuar të gjithë procesin. Le të themi se duam të shtojmë një njoftim të vogël në fund të faqes sonë të internetit. Ne mund të përdorim grepin 'wp_footer' për këtë sepse është një pjesë e detyrueshme e kodit që përdor çdo temë.

    Funksioni msp_helloworld_footer_notice())( jehonë "Përshëndetje, unë jam njoftimi juaj i personalizuar"; ) add_action("wp_footer", "msp_helloworld_footer_notice");

    Në këtë shembull, ne krijuam një funksion që thjesht jep shënimin për sinjalizimin dhe e regjistruam atë me 'wp_footer'. Pasi të shtojmë këtë kod në skedarin tonë të shtojcave (shihni të mëparshmen) do të shohim rezultatin në faqe:

    Sinjalizim i shtojcave të WordPress

    Puna me filtra

    Filtrat funksionojnë në të njëjtën mënyrë si ngjarjet. Por filtrat nuk ekzekutojnë vetëm një pjesë specifike të kodit, por ndryshojnë vlerat që u kalohen atyre nga grepi. Kjo do të thotë që çdo filtër ka një vlerë të lidhur (ndryshore) në të cilën funksionon.

    Funksioni i filtrit do ta marrë këtë vlerë dhe do ta transformojë për përdorim të mëtejshëm. Gurpat e filtrit janë paksa të ndryshëm nga grepat e veprimit.

    Apply_filters($tag, $value_to_filter, $arg_1, $arg_2, ... , $arg_n);

    Funksioni 'apply_filter' krijon një grep filtri të quajtur $tag dhe një parametër të kërkuar $value_to_filter (ky mund të jetë bosh, por duhet të deklarohet). Argumentet e mbetura opsionale funksionojnë njësoj si për ngjarjet.

    Filter_function($value_to_filter, $arg_1, $arg_2, ... , $arg_n)( //filtro kthen $value_to_filter; //vlera duhet të kthehet)

    Ky është "skeleti" i filtrit, i cili tregon se filtri duhet:

  • pranoni të paktën 1 argument;
  • ktheni vlerën e modifikuar.
  • add_filter($tag, $function_to_add, $priority, $accepted_args);

    Funksioni 'add_filter' regjistron një funksion me emrin që gjendet në $function_to_add për grepin $tag. Argumentet e mbetura - $priority dhe $accepted_args - funksionojnë njësoj si për grepa ngjarjesh.

    Le të shohim një shembull: një detyrë e zakonshme për një shtojcë është të shtojë diçka në fund të një postimi. Nëse i hedhim një vështrim më të afërt funksionit 'the_content', i cili përdoret për të shfaqur përmbajtjen e një postimi, do të gjejmë grepin e mëposhtëm:

    $përmbajtja = aplikoni_filtrat ("përmbajtja_përmbajtja", $përmbajtja);

    Duke e përdorur atë, ne lehtë mund të shtojmë diçka në fund të postimit.

    Funksioni msp_helloworld_post_footer($content) ( $content .= "

    Përshëndetje, unë jam fundi juaj i personalizuar i postimit

    "; kthe $content; ) add_filter("the_content", "msp_helloworld_post_footer", 100);

    Vini re se ne përdorim një numër të madh për prioritet për të siguruar që të gjithë filtrat standardë të ekzekutohen përpara se të ekzekutohet 'msp_helloworld_post_footer'. Pasi të kemi përfshirë kodin në shtojcën tonë, do të shohim rezultatin:


    Si të gjeni një goditje

    Tani e kuptojmë se për të kryer veprime të caktuara, duhet të dimë për grepa ekzistuese.

    Kodiku i WordPress ofron lista të grepave për filtrat dhe ngjarjet e Referencës së Veprimit dhe Referencës së Filtrave.

    Veprime shtesë me grepa

    Ashtu si shtimi, një goditje mund të hiqet duke përdorur sintaksë të ngjashme.

    Mund të fshini ngjarje si kjo:

    Remove_action($tag, $function_to_remove, $priority, $accepted_args); heq_të gjitha_aksionet ($tag, $priority);

    Siç mund ta keni marrë me mend, 'remove_action' heq një ngjarje specifike të regjistruar për një goditje të caktuar (përparësia dhe numri i argumenteve duhet të specifikohen saktë, siç u specifikua gjatë regjistrimit), dhe 'remove_all_actions' ndihmon në heqjen e të gjitha ngjarjeve të regjistruara për një goditje ( nëse prioriteti hiqet, funksioni do të fshijë të gjitha ngjarjet).

    Filtrat mund të fshihen në të njëjtën mënyrë:

    Remove_filter($tag, $function_to_remove, $priority, $accepted_args); heq_të gjithë_filtrat ($tag, $priority);

    API-ja e shtojcës WordPress gjithashtu ofron funksione për të kontrolluar nëse një funksion është regjistruar për një goditje të caktuar:

    Ka_veprim ($tag, $function_to_check); ka_filter ($tag, $function_to_check);

    Të dy funksionet kontrollojnë nëse funksioni i dhënë është i regjistruar për grep dhe kthejnë true nëse janë të suksesshëm, përndryshe flase. Brenda funksionit kemi mundësinë të kontrollojmë nëse grepi e quajti atë:

    If ("hook_to_check_name" === aktual_filter())()

    Pavarësisht emrit 'current_filter' punon jo vetëm me filtra, por edhe me ngjarje.

    Shembull jo i parëndësishëm

    Le të ringjallim "skeletin" e shtojcës sonë, të cilën e përgatitëm në mësimin e fundit.

    Le të mbushim skedarin 'core.php' (pjesa kryesore e shtojcës sonë, e cila përmban pjesën më të madhe të funksioneve) me kod që zgjidh një problem që mund të lindë gjatë punës. Për ta zgjidhur këtë ne do të përdorim veprime dhe filtra.

    Lëreni faqen tuaj të WordPress të pranojë postime nga autorë të ndryshëm nga të ftuarit, por nuk ju lejon të krijoni llogari. Kjo do të thotë që përdoruesi që ka publikuar postimin dhe autori i vërtetë janë njerëz të ndryshëm dhe ne duhet të sigurohemi që autori të tregohet në postim. Ne mund ta bëjmë këtë duke përdorur taksonominë.

    Le të krijojmë taksonominë tonë për të përpunuar emrin e autorit dhe biografinë e shkurtër. Ne do të jemi në gjendje të përdorim emrin e autorit si terma të tjerë të taksonomisë (etiketat, për shembull) në postim. Kodi:

    /** regjistro filtrat dhe ngjarjet **/ funksioni msp_helloworld_init())( add_action("init", "msp_helloworld_taksonomies"); add_filter("the_content", "msp_helloworld_author_block_filter"); add_filter("post_class)"sm"; add_action ("plugins_loaded", "msp_helloworld_init"); /** taksonomia **/ funksioni msp_helloworld_taxonomies())( $args = array("labels" => array("name" => "Autorët e ftuar", "singular_name" => "Autori i ftuar"), "show_in_nav_menus" = > false register_taxonomy("gauthor", array("post"), $args ) /** shënjimi i bllokut të autorit **/ funksioni msp_helloworld_author_block())( global $post; $author_terms = wp_get_object_terms($post->ID, "gauthor" if(empty($author_terms)) return $emri = stripslashes ($author_terms->emri $url = esc_url(get_term_link($autor_terms)); $out .= "Ky është një postim i ftuar nga $out .= "($desc)"; ()) $content .= msp_helloworld_author_block( return $content ) /** shto klasën CSS në postim **/ funksionin msp_helloworld_post_class($post_class)( global $post; $ author_terms = wp_get_object-> "; gauthor"); if(!empty($author_terms))($post_class = "gauthor"; ) ktheni $post_class; )

    Siç mund ta shihni, ne kemi krijuar një funksion për të regjistruar taksonominë tonë dhe për ta lidhur atë me grepin "init". Më pas, ne krijuam një shabllon përgjegjës për shfaqjen e bllokut të autorit duke përdorur funksionin e WordPress 'wp_get_object_terms'. Më pas kemi futur një bllok me informacione për autorin në fund të postimit duke përdorur filtrin 'the_content'. Dhe së fundi, ne shtuam klasën tonë CSS. Rezultati:


    Ky artikull hyn në detaje rreth përdorimit të ndryshores PHP _SELF.

    Çfarë është ndryshorja PHP _SELF?

    Ndryshorja PHP _SELF kthen emrin dhe shtegun e skedarit aktual (në lidhje me rrënjën e dokumentit). Ju mund ta përdorni këtë variabël në atributin e veprimit të formularit. Ka edhe disa nuanca që duhet të dini. Natyrisht, nuk mund t'i injorojmë këto nuanca.

    Le të shohim disa shembuj.

    Echo $_SERVER["PHP_SELF"];

    1) Le të supozojmë se skedari juaj php ndodhet në adresën e mëposhtme:

    Http://www.yourserver.com/form-action.php

    Në këtë rast, ndryshorja PHP _SELF do të përmbajë:

    "/form-action.php"

    2) Le të supozojmë se skedari juaj php ndodhet në këtë adresë:

    Http://www.yourserver.com/dir1/form-action.php

    PHP_SELF do të jetë:

    "/dir1/form-action.php"

    PHP _SELF në atributin e veprimit të formës. Pse ishte e nevojshme ajo atje?

    Zakonisht ndryshorja PHP _SELF përdoret në atributin e veprimit të etiketës së formës. Atributi i veprimit specifikon adresën në të cilën do të dërgohet përmbajtja e formularit pas konfirmimit (përdoruesi klikon në butonin me type="submit"). Si rregull, kjo është e njëjta faqe nga e cila u largua formulari.

    Megjithatë, nëse riemërtoni skedarin e referuar nga formulari, do t'ju duhet të riemërtoni emrin e skedarit në atributin e veprimit, përndryshe formulari nuk do të funksionojë.

    Ndryshorja PHP _SELF do t'ju shpëtojë nga korrigjimet e panevojshme, pasi adresa e faqes do të gjenerohet automatikisht bazuar në emrin e skedarit.

    Le të themi se keni një skedar formulari të quajtur form-action.php dhe dëshironi që formulari të dorëzohet në të njëjtin skedar pas konfirmimit. Zakonisht ata shkruajnë kështu:

    Por ju mund të përdorni variablin PHP _SELF në vend të form-action.php. Në këtë rast, kodi do të duket si ky:

    Artikujt më të mirë mbi këtë temë