Bardzo często istnieją przykłady zasobów internetowych do nauki i rozwijania wtyczek do Wordpressa, które sugerują użycie PHP puste, aby sprawdzić atrybuty shortcodes. Ale zastanówmy się, jak działa ta funkcja i jakie błędy mogą wystąpić, jeśli nie jest używana prawidłowo.
Cechy funkcji empty (), którą musisz znać
W przypadku (pusty ($ bla)) {echo "zmienna jest pusty"} //odbitki "zmienna jest pusta"
Dlatego potrzebujemy dodatkowej weryfikacji przez funkcję isset ():
$ foo = 1;
if (isset ($ bla) i wzmacniacz, i wzmacniacz ;! pusty ($ bla)) {. echo "zmienna =" $ foo;} //odbitki "zmienna = 1"
,
Wartość , które PHP empty () uważa za puste, to:
- "" (linie - strlen (") == 0);
- 0 (liczby całkowite - (wewnętrzne) 0);
- 0,0 (liczby zmiennoprzecinkowe - 0.0)
- "0" (linie - strlen ("0") == 1) ,
NULL,
,FAŁSZ ;
- array () (puste tablice - count (array ()) == 0).
$ STRING_1 = "
echa strlen ($ STRING_1) //wyświetla 0
if (empty ($ STRING_1)) {echo 'STRING_1 pusty';} //odbitki" STRING_1 jest pusta „
$ STRING_2 = '0',
echa strlen ($ STRING_2) //drukuje 1
if (empty ($ STRING_2)) {echo 'STRING_2 pusty';} //zwraca "string_2 is empty"
Łańcuch ($ string_2), który jest jednym znakiem z łańcuchem zero ("0"), również wygląda na pusty.
Związek ;! - fb_336x280_1 - i kwasu
Związek pośredni scenariusz i kwasu (adsbygoogle = okno.
$ string_3 = '';
echostrlen ($ string_3); //wypisze 1
jeśli (pusty ($ string_3)) {echo 'string_3 jest pusty';} //nic nie zostanie wydedukowane
Rozważmy praktyczne zastosowanie PHP puste i zobaczmy, jak ta funkcja może prowadzić do nieoczekiwanego wyniku.
Zastosowanie funkcji empty () do sprawdzania atrybutów shortcode w wtyczkach do WordPressa
Na przykład tworzysz wtyczkę do Wordpressa, która będzie używała shortcodes do wyświetlania artykułów od różnych autorów. Na stronie konta każdy autor będzie wyświetlać własne artykuły ("self") i artykuły od innych autorów ("inny") w ciągu ostatniego miesiąca. Za pomocą krótkiego kodu można kontrolować liczbę wyników artykułu. Domyślnie, jeśli atrybuty "self" i "another" nie są ustawione, wyprowadzimy na przykład 25 własnych postów i 15 postów innych autorów.
& lt ;! - fb_336x280_2 - & gt;
& lt; skrypt & gt; (adsbygoogle = window.adsbygoogle || []). push ({});
[author_posts]
Aby zmienić wartość, dodaj inną liczbę atrybutów shortcode:
[author_posts self = "10" another = " 5]]
Zobaczmy, co jest w kodzie wtyczki:
",
" inny "= & gt;"
,
$ atts,
"author_posts"
);
if (! Empty ($ atts ['self'])) {
echo $ atts ['self']. "Post (s)";
} else {
echo "25 self posts";}
if (! Empty ($ atts ['another'])) {
echo $ atts ['another']. s) ";
} else {
echo "15 postów innych autorów";
}
}
add_shortcode ('author_posts', 'posts_shortcode');
Tutaj po prostu drukujemy dane, które użytkownik przekazał przez krótki kod. W rezultacie zobaczymy 10 własnych postów i 5 innych autorów.
& lt; script type = "text /javascript" & gt;
może blokować Ustawienia 2 = {ID bloku: "R-A-70350-39", renderTo: "yandex_rtb_R-A-70350-39", async:! 0};
if (document.cookie.indexOf ("abmatch =") & gt; = 0)blockSettings2.statId = 70350;
! Zastosowanie (a, b, c, d, e) {A [c] = A [c] || [] A [c] .Push (funkcja () {Ya.Context.AdvManager.render (blockSettings2)}), e = b.getElementsByTagName ("scenariusz")d = b.createElement ("scenariusz") d.type = "text /JavaScript" d.src = „//an.yandex .ru /System /context.js "d.async = 0e.parentNode.insertBefore (d, e)} (to this.document," yandexContextAsyncCallbacks „);
Jeżeli nie chcemy, aby zobaczyć, na przykład, pozycje innych autorów, pisać w shortkod „kolejną = 0”, a pozycje innych autorów wskazują. Ale nie! Funkcja PHP empty () znajdzie ciąg „0” jako pusta, a zamiast „0” pozycje innych autorów wyświetla wartość domyślna to 15 wpisów zamiast zera.
W Innymi słowy, te dwa podobne pozycje:
[author_posts inny = "0"]
[author_posts]
, , aby shortkod działają prawidłowo , zmień warunek:
$ is_null = (int) (- 1);
"inny" = & gt; $ Is_null
,
, jeżeli ($ atts ['inny'] & gt; 1) {
echo $ ATTS ['inny'] "post (y)".;
} else {
echo "15 postów innych autorów";
}
Jeśli atrybut "inny" nie jest określony, to domyślnie niech będzie (-1). Wtedy w warunku przyjmiemy, że atrybut jest podany, jeśli jest większy (-1).
Tak więc, ta shortkod
[author_posts inny = "0"]
są teraz dobrze, zastanawiamy się, że domyślna 25 Autor artykułów (na przykład atrybut "self" nie jest określony) i brak artykułów od innych autorów.
Kod:
'
' inny „= & gt; $ is_null
)
($ atts author_posts 115) ''
)
if (empty (! $ atts ['ja'])) {
echo $ atts ['ja'] ". Post (a)
"
} else {
echo" 25 własny stanowisk
„}
, jeżeli ($ atts ['inny'] & gt; 1) {
echo $ atts ['another']. " po (a)
"
} else {
echo" 15 wiadomości innego autorów
„,
}
}
add_shortcode ('author_posts', 'posts_shortcode' )
Możesz myśleć o swoim stanie, ważne,że widziałeś funkcje funkcji empty () i nadal nie popełniaj błędów podczas używania. Umieść ten plik w folderze Wordpress "/wp_content /plugins /" aktywuj wtyczkę w panelu administracyjnym, to zadziała.