Własna wtyczka, opcje tablica 3d, dodawanie, kasowanie
-
Zrobiłem sobie wtyczkę na której się w sumie uczę obecnie.
Utworzyłem stronę opcji, menu itd.
Na tym etapie wszystko gra.Dane ustawień wtyczki są przechowywane w tablicy i mają taką formę:
Array ( [licencja] => Array ( [0] => Array ( [cena_lic] => 5,00 [opis_lic] => opis 1 treść ) [1] => Array ( [cena_lic] => 15,00 [opis_lic] => opis 2 treść ) [3] => Array ( [cena_lic] => 6,00 [opis_lic] => opis 3 treść ) [4] => Array ( [cena_lic] => [opis_lic] => ) [5] => Array ( [cena_lic] => [opis_lic] => ) ) [pod_vat] => 23 [rach_pap] => 4,00 )
jak widać dodało mi puste wartości i dodatkowo klucze tablicy nie są po kolei w sensie takim, że zjadło klucz 2. Czyli powinno być 0,1,2,3,4.
Klucz 4 i 5 w ogóle nie powinien istnieć bo jest pusty. Pusta wartość powinna być dopuszczalna tylko dla [opis_lic].
[licencja] jest wyświetlana w pętli w panelu administratora jako ustawienia wtyczki (pola input i textarea), i chcę mieć możliwość dodawana nowych wpisów do tablicy, czyli nowych cen i opisów licencji.
Więc utworzyłem puste pola poza pętlą input i textarea, które dodają wartości do tablicy.
Ich id określiłem poprzez zliczenie ilości kluczy w tablicy i do tego dodałem 1. Nie wiem czy to prawidłowy sposób.I o ile to dodawanie działa, tak mam problem, że potrafi mi dodać puste wpisy, jeśli do pola input i textarea nic nie wpiszę, albo przeładuję stronę.
W jaki sposób temu zapobiec? Czy mam coś zrobić w funkcji validującej register_setting ($sanitize_callback) ?
register_setting( $option_group, $option_name, $sanitize_callback );
Czyli w skrócie.
Chcę dodawać nowe opcje, móc je edytować i kasować. Z kasowaniem tez nie wiem jak zrobić.
Często widzę, że wpis do tablicy jest kasowany gdy wymażemy dane z pola input. Wówczas funkcja robi tak, że jeśli brak wartości to kasuje odpowiedni klucz tablicy. Ewentualnie dodatkowy mały przycisk po prawej stronie każdego wiersza.
Mam nadzieję że w miarę klarownie to opisałem:)
- Temat ‘Własna wtyczka, opcje tablica 3d, dodawanie, kasowanie’ jest zamknięty na nowe odpowiedzi.