{"id":230322,"date":"2022-12-10T12:01:00","date_gmt":"2022-12-10T09:01:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230322"},"modified":"2022-12-10T12:04:11","modified_gmt":"2022-12-10T09:04:11","slug":"programowanie-wordpress-omijanie-kodu","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/programowanie-wordpress-omijanie-kodu\/","title":{"rendered":"Programowanie WordPress: omijanie kodu"},"content":{"rendered":"\n<p>Je\u015bli do tej pory \u015bledzi\u0142e\u015b t\u0119 <strong><a href=\"https:\/\/tommcfarlin.com\/tag\/the-independent-wordpress-developer\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">seri\u0119<\/a><\/strong>, prawdopodobnie widzisz, jak przydatne mo\u017ce by\u0107 prawid\u0142owe debugowanie, zw\u0142aszcza podczas pracy z WordPress.<\/p>\n<p>Oznacza to, \u017ce nie tylko mo\u017cesz uzyska\u0107 cenny wgl\u0105d we w\u0142asne projekty, ale tak\u017ce mo\u017cesz zobaczy\u0107, jak dzia\u0142a rdze\u0144 WordPressa.<\/p>\n<p>W tym momencie jednak niewiele zrobili\u015bmy. Jak by\u0107 mo\u017ce pami\u0119tasz z <strong><a href=\"https:\/\/wordpress.mediadoma.com\/pl\/wprowadzenie-do-debugowania\/\" title=\"poprzedniego postu\">poprzedniego postu<\/a><\/strong> (lub je\u015bli nie ogl\u0105da\u0142e\u015b screencastu, teraz jest na to dobry moment), mo\u017cesz zobaczy\u0107, ile ofert debugowania.<\/p>\n<p>Prawda jest taka, \u017ce \u200b\u200bledwo zadrapali\u015bmy powierzchni\u0119. Jak wspomnia\u0142em ostatnio, ten post i ten screencast skupi\u0105 si\u0119 w szczeg\u00f3lno\u015bci na nast\u0119puj\u0105cych kwestiach:<\/p>\n<blockquote>\n<p>W nast\u0119pnym po\u015bcie przyjrzymy si\u0119 bardziej zaawansowanym rzeczom, kt\u00f3re mo\u017cemy zrobi\u0107, takim jak wchodzenie do funkcji, wychodzenie z funkcji i przechodzenie przez funkcje.<\/p>\n<\/blockquote>\n<p>Nadal nie jeste\u015bmy w punkcie, w kt\u00f3rym b\u0119dziemy si\u0119 martwi\u0107 zmian\u0105 warto\u015bci zmiennych w locie, ale na pewno zobaczymy, jak mo\u017cemy strategicznie wykorzysta\u0107 debugger, aby przej\u015b\u0107 do pewnych funkcji, przeskoczy\u0107 niekt\u00f3re funkcje i wyjd\u017a z niekt\u00f3rych funkcji.<\/p>\n<h2>Obej\u015bcie kodu<\/h2>\n<p>Przed udost\u0119pnieniem screencastu chc\u0119 zdefiniowa\u0107, co to znaczy obej\u015b\u0107 kod w projekcie. Brzmi to jak co\u015b, co robimy za ka\u017cdym razem, gdy poruszamy si\u0119 po bazie kodu.<\/p>\n<p>Ale to nie jest prawda w kontek\u015bcie debugowania.<\/p>\n<\/p>\n<p>Pami\u0119taj, \u017ce na potrzeby tej konkretnej serii u\u017cywam najnowszej wersji WordPressa firmy Subversion. Mo\u017cesz sprawdzi\u0107, jak to skonfigurowa\u0107, czytaj\u0105c <strong><a href=\"https:\/\/wordpress.mediadoma.com\/pl\/tworzenie-wtyczek-i-motywow-na-wordpress-trunk\/\" title=\"ten post\">ten post<\/a><\/strong>.<\/p>\n<h3>S\u0142owo o krokach<\/h3>\n<p>Przed zdefiniowaniem nadchodz\u0105cych termin\u00f3w pami\u0119taj, \u017ce idea \u201ekroku&quot; podczas debugowania jest analogiczna do przechodzenia wiersz po wierszu przez baz\u0119 kodu.<\/p>\n<p>Jak widzieli\u015bmy w poprzednim po\u015bcie, wykonywanie programu zostanie zatrzymane, gdy tylko trafiony zostanie punkt przerwania. Od tego momentu wynik przebiegu programu pozostawiamy nam. I maj\u0105c to jako t\u0142o, zdefiniujemy kilka termin\u00f3w.<\/p>\n<ul>\n<li><strong>Wchodzenie do funkcji<\/strong> to akcja, kt\u00f3ra po wywo\u0142aniu funkcji zabierze Ci\u0119 do funkcji. Czasami jest to przydatne, na przyk\u0142ad je\u015bli chcesz zobaczy\u0107, co robi funkcja lub zobaczy\u0107, jak ustawiane s\u0105 warto\u015bci; innym razem jest to niepotrzebne, je\u015bli zale\u017cy ci tylko na wykonaniu funkcji lub zale\u017cy ci tylko na tym, co zwraca.<\/li>\n<li><strong>Przekroczenie wywo\u0142ania funkcji<\/strong> pozwoli Ci omin\u0105\u0107 wykonanie funkcji w tym sensie, \u017ce nadal dzia\u0142a, po prostu nie widzimy, jak faktycznie dzia\u0142a. Zamiast tego kontrola przejdzie do nast\u0119pnego wiersza po zako\u0144czeniu wykonywania funkcji.<\/li>\n<li><strong>Wychodzenie z funkcji<\/strong> jest u\u017cywane, gdy wchodzisz do funkcji, osi\u0105gasz punkt, w kt\u00f3rym ko\u0144czysz ocenianie kodu, a nast\u0119pnie jeste\u015b gotowy do powrotu do tego, co dalej zrobi baza kodu. Jest to przydatne, je\u015bli chcesz dowiedzie\u0107 si\u0119, gdzie mo\u017ce le\u017ce\u0107 b\u0142\u0105d i podejrzewasz, \u017ce znajduje si\u0119 on w jednej cz\u0119\u015bci kodu (gdzie mo\u017ce lub nie).<\/li>\n<\/ul>\n<p>I to wszystko. Je\u015bli jest to zupe\u0142nie nowe, mo\u017ce brzmie\u0107 dziwnie lub mo\u017ce by\u0107 trudno owin\u0105\u0107 wok\u00f3\u0142 niego g\u0142ow\u0119. Je\u015bli tak jest, to w porz\u0105dku. Tak to jest z czymkolwiek nowym, prawda?<\/p>\n<p>Z drugiej strony, je\u015bli znasz te terminy lub \u0142atwo zapoznasz si\u0119 z ich definicjami, rozwa\u017c poprzednie punkty jako przypomnienie.<\/p>\n<h3>A teraz screencast<\/h3>\n<p>W tym screencastu wszystkie powy\u017csze czynno\u015bci wykonam za pomoc\u0105 jednej z moich w\u0142asnych wtyczek \u2013 <strong><a href=\"https:\/\/wordpress.org\/plugins\/easier-excerpts\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Easier Excerpts<\/a><\/strong>. Nie oznacza to jednak jakiejkolwiek autopromocji. Zamiast tego znam baz\u0119 kodu i nie musz\u0119 si\u0119 martwi\u0107 o faktyczne pokazywanie pracy, kt\u00f3ra jest wykonywana dla kogo\u015b innego.<\/p>\n<div class=\"sds-iframe-wrapper fitvidsignore\" style=\"position:relative;padding-top:56.25%;max-width:100%;\"><iframe allowfullscreen style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" src=\"\/\/www.youtube.com\/embed\/DZFBcEzEIVw\" frameborder=\"0\"><\/iframe><\/div>\n<p>Teraz, gdy widzia\u0142e\u015b screencast i wiesz, \u017ce jest to wy\u0142\u0105cznie moja baza kodu, mo\u017cesz <strong><a href=\"https:\/\/wordpress.org\/plugins\/easier-excerpts\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">pobra\u0107 kod<\/a><\/strong> i samodzielnie wykona\u0107 wszystkie te same czynno\u015bci, aby uzyska\u0107 informacje o tym, jak wykona\u0107 czynno\u015bci opisane w tym po\u015bcie.<\/p>\n<p>Zapewni to jeszcze wi\u0119cej praktyki w zakresie umiej\u0119tno\u015bci debugowania i powinno u\u0142atwi\u0107 dalsze doskonalenie naszych umiej\u0119tno\u015bci debugowania, gdy przejdziemy do przodu w nast\u0119pnym po\u015bcie.<\/p>\n<h2>W przysz\u0142ym<\/h2>\n<p>To troch\u0119 d\u0142ugi post i stara\u0142em si\u0119 upewni\u0107, \u017ce wszystkie wyja\u015bnienia zosta\u0142y wykonane przed obejrzeniem screencastu. W ko\u0144cu o wiele \u0142atwiej jest przeczyta\u0107 akapity tekstu dotycz\u0105ce tre\u015bci, a nast\u0119pnie obejrze\u0107 je w kr\u00f3tkim filmie, ni\u017c w 15-minutowym filmie, prawda?<\/p>\n<p>Cho\u0107 mo\u017ce to by\u0107 przydatne, jest w tym jeszcze co\u015b wi\u0119cej. I to om\u00f3wimy w nast\u0119pnym po\u015bcie. W szczeg\u00f3lno\u015bci przyjrzymy si\u0119, jak sprawdza\u0107 warto\u015bci zmiennych, przegl\u0105da\u0107 zawarto\u015b\u0107 tablicy, a nast\u0119pnie modyfikowa\u0107 zmienne w locie.<\/p>\n<p>To pot\u0119\u017cna sprawa, ale upewnij si\u0119, \u017ce przejrza\u0142e\u015b <strong><a href=\"https:\/\/wordpress.mediadoma.com\/pl\/wprowadzenie-do-debugowania\/\" title=\"pierwszy fragment tre\u015bci\">pierwszy fragment tre\u015bci<\/a><\/strong>, dok\u0142adnie przejrza\u0142e\u015b ten post i po\u0107wicz troch\u0119, zanim przejdziesz dalej.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Przed udost\u0119pnieniem screencastu chc\u0119 zdefiniowa\u0107, co to znaczy omija\u0107 kod w projekcie. Wtedy poka\u017c\u0119 ci jak.<\/p>\n","protected":false},"author":1,"featured_media":236179,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[721,897,845],"tags":[1169],"class_list":["post-230322","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-kod","category-samouczki","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/230322","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=230322"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/230322\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/236179"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=230322"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=230322"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=230322"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}