{"id":229723,"date":"2022-11-26T11:01:00","date_gmt":"2022-11-26T08:01:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229723"},"modified":"2022-11-09T16:06:20","modified_gmt":"2022-11-09T13:06:20","slug":"z-wdziekiem-obsluguj-obsluge-wersji-php-w-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/z-wdziekiem-obsluguj-obsluge-wersji-php-w-wordpress\/","title":{"rendered":"Z wdzi\u0119kiem obs\u0142uguj obs\u0142ug\u0119 wersji PHP w WordPress"},"content":{"rendered":"\n<p>Odk\u0105d pracuj\u0119 z WordPressem, rozmowa (i u\u017cywam tego terminu lu\u017ano) na temat tego, kt\u00f3re wersje PHP powinien, a kt\u00f3rych nie powinien obs\u0142ugiwa\u0107, trwa\u0142a.<\/p>\n<ul>\n<li>Kr\u00f3tko m\u00f3wi\u0105c, niekt\u00f3rzy postrzegaj\u0105 go jako aplikacj\u0119 tak du\u017c\u0105 i popularn\u0105 jak WordPress, kt\u00f3ra obs\u0142uguje tak wiele stron internetowych opartych na CMS, powinna by\u0107 w stanie wykorzysta\u0107 swoj\u0105 si\u0142\u0119 do wspierania bardziej innowacyjnych rozwi\u0105za\u0144.<\/li>\n<li>Inni widz\u0105, \u017ce ludzie nie cz\u0119sto aktualizuj\u0105, s\u0105 na tanich hostach lub po prostu nie dbaj\u0105 (nie m\u00f3wi\u0105c ju\u017c o zawracaniu sobie g\u0142owy wiedz\u0105), jak\u0105 wersj\u0119 PHP u\u017cywaj\u0105.<\/li>\n<\/ul>\n<p>Te dwa punkty mog\u0105 da\u0107 post i komentarze przez wiele dni, ale nie jestem tym zainteresowany. Poniewa\u017c <strong><a href=\"https:\/\/pressware.co\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">m\u00f3j zesp\u00f3\u0142 i ja<\/a><\/strong> zajmujemy si\u0119 tworzeniem niestandardowych rozwi\u0105za\u0144 dla innych, mamy elastyczno\u015b\u0107 w zakresie tego, gdzie u\u017cytkownicy hostuj\u0105 swoj\u0105 witryn\u0119 lub aplikacj\u0119, wdra\u017caj\u0105 j\u0105 i wykorzystuj\u0105 funkcje PHP oferowane przez ich hosty.<\/p>\n<p>Zdarzaj\u0105 si\u0119 jednak sytuacje, w kt\u00f3rych spotka\u0142em ludzi z wersjami PHP tak niskimi jak 5.3.<\/p>\n<p>Wi\u0119c co wtedy?<\/p>\n<p>Po pierwsze, <strong><a href=\"https:\/\/wordpress.org\/about\/requirements\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">strona wymaga\u0144 WordPressa<\/a><\/strong> wyra\u017anie wspomina o tym:<\/p>\n<blockquote>\n<p>Je\u015bli jeste\u015b w starszym \u015brodowisku, w kt\u00f3rym masz tylko starsze wersje PHP lub MySQL, WordPress dzia\u0142a r\u00f3wnie\u017c z PHP 5.2.4+ i MySQL 5.0+, ale te wersje osi\u0105gn\u0119\u0142y oficjalny koniec \u017cycia.<\/p>\n<\/blockquote>\n<p>Tak wi\u0119c, \u017ceby by\u0142o jasne, dzia\u0142a na starszych wersjach PHP, ale jako programi\u015bci b\u0119dziemy powa\u017cnie ograniczani przez to, co mo\u017cemy zrobi\u0107 z j\u0119zykiem. Jak wspomniano na stronie, implikacje bezpiecze\u0144stwa i wsparcie \u201eko\u0144ca \u017cycia&quot; wersji j\u0119zyka nie powinny by\u0107 ignorowane.<\/p>\n<p>Zawsze, gdy pracuj\u0119 z wtyczk\u0105 lub czym\u015b, co b\u0119dzie dzia\u0142a\u0107 na WordPressie i wiem, \u017ce b\u0119dzie musia\u0142o dzia\u0142a\u0107 na r\u00f3\u017cnych hostach, zapewniam minimalne wsparcie. To zwykle PHP 5.6.20.<\/p>\n<p>Je\u015bli \u015brodowisko, w kt\u00f3rym ma dzia\u0142a\u0107 projekt, nie obs\u0142uguje tego, powiadomi\u0119 o tym i uniemo\u017cliwi\u0119 uruchomienie projektu. W kontek\u015bcie wtyczki, prawdopodobnie najlepiej pod\u0142\u0105czy\u0107 si\u0119 do funkcji register_activation_hook.<\/p>\n<p>Aby to zrobi\u0107, mo\u017cesz napisa\u0107 co\u015b <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/eab44952ef0add72eafab04332f9ef34#file-00-php-version-support-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">takiego:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\nregister_activation_hook(__FILE__, __NAMESPACE__. 'acme_activate');\n\/**\n * Verifies that the user is running the proper version of WordPress for the\n * plugin to execute; otherwise, displays an error message and prevents the\n * plugin from being activated.\n *\/\nfunction acme_activate()\n{\n    if (version_compare(PHP_VERSION, '5.6.20', '&lt;')) {\n        wp_die(\n            sprintf(\n                'Acme requires PHP 5.6.20 or higher.\n                Your WordPress site is using PHP %s. Please contact your hosting\n                provider and ask that they upgrade the version of PHP on which\n                your installation of WordPress is running. Click back in your\n                browser to your WordPress dashboard.',\n                PHP_VERSION) );\n    }\n}<\/code><\/pre>\n<p>To prawda, \u017ce \u200b\u200bjest prosty, a wy\u015bwietlacz u\u017cywa standardowej stylizacji wp_die, ale dzia\u0142a r\u00f3wnie\u017c. Je\u015bli masz wi\u0119cej do\u015bwiadczenia lub czasu, mo\u017cesz te\u017c troch\u0119 inaczej przeprowadzi\u0107 kontrol\u0119 i stworzy\u0107 w\u0142asn\u0105 stylizacj\u0119.<\/p>\n<p>Celem tego posta nie jest jak to zrobi\u0107. Zamiast tego punkty s\u0105 nast\u0119puj\u0105ce:<\/p>\n<ul>\n<li>okre\u015bli\u0107, jak\u0105 wersj\u0119 PHP zamierzasz obs\u0142ugiwa\u0107,<\/li>\n<li>por\u00f3wnaj wersj\u0119 PHP dzia\u0142aj\u0105c\u0105 na serwerze,<\/li>\n<li>wygeneruj komunikat, je\u015bli wersja PHP na serwerze jest mniejsza ni\u017c ta, kt\u00f3r\u0105 b\u0119dziesz obs\u0142ugiwa\u0142,<\/li>\n<li>z wdzi\u0119kiem wyjd\u017a.<\/li>\n<\/ul>\n<p>To, w jaki spos\u00f3b zako\u0144czysz renderowanie, zale\u017cy od Ciebie, ale sedno powy\u017cszego kodu powinno wystarczy\u0107, aby zacz\u0105\u0107.<\/p>\n<h3>Dodatkowe uwagi<\/h3>\n<ul>\n<li><strong><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_die\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_the<\/a><\/strong><\/li>\n<li><a href=\"https:\/\/php.net\/manual\/en\/function.version-compare.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">por\u00f3wnanie_wersji<\/a><\/li>\n<li><strong><a href=\"https:\/\/php.net\/manual\/en\/reserved.constants.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP_VERSION<\/a><\/strong><\/li>\n<li><strong><a href=\"https:\/\/php.net\/manual\/en\/function.sprintf.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sprint<\/a><\/strong><\/li>\n<\/ul>\n<p>A je\u015bli naprawd\u0119 chcesz zag\u0142\u0119bi\u0107 si\u0119 w obs\u0142ug\u0119 ci\u0105g\u00f3w w PHP, polecam post <strong><a href=\"https:\/\/twitter.com\/twigpress\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Carla na temat<\/a><\/strong> <strong><a href=\"https:\/\/carlalexander.ca\/php-string-formatting\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">obs\u0142ugi ci\u0105g\u00f3w w PHP<\/a><\/strong>.<\/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>Obs\u0142ugiwane wersje PHP w WordPress mog\u0105 si\u0119 r\u00f3\u017cni\u0107 w zale\u017cno\u015bci od projektu. Oto jeden ze sposob\u00f3w obs\u0142ugi tego w wtyczce.<\/p>\n","protected":false},"author":1,"featured_media":164297,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[721,919,805,845,866],"tags":[1169],"class_list":["post-229723","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-inny","category-php-7","category-samouczki","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/229723","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=229723"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/229723\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/164297"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=229723"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=229723"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=229723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}