Jeśli chodzi o programowanie, idea wartości tymczasowych lub zmiennych tymczasowych lub jakikolwiek sposób tymczasowego przechowywania danych w pamięci nie jest niczym nowym.
Ale pracując z WordPressem – który jest bezpaństwowy – nie zawsze mamy ten luksus. Oznacza to, że nie jest to po prostu kwestia, powiedzmy, wrzucenia czegoś do bieżącej sesji, przeczytania tego, a następnie usunięcia go, gdy skończymy.
I właśnie wtedy coraz więcej zastanawiałem się nad pomysłem tymczasowych opcji, oczywiście z braku lepszego terminu. Oznacza to, że za każdym razem, gdy potrzebuję przechowywać wartość z pojedynczego załadowania strony lub żądania, aby odczytać w innym załadowaniu strony lub innym żądaniu, tymczasowo wrzucę wartość do tabeli opcji.
Opcje tymczasowe: ćwiczenie i reprezentacja poprzez szkicowanie szczątkowe
Czy to niechlujne? Może. Czy mamy wiele innych możliwości? Zależy to od tego, z jakiej nowoczesnej technologii przeglądarki chcemy korzystać. Nie o to jednak chodzi w tym poście.
Chodzi o to, że ze względu na sposób, w jaki działa WordPress, zastanawiam się, czy naszą obecną, najlepszą strategią utrzymywania wartości tymczasowych, która jest najszerzej obsługiwana we wszystkich instalacjach, jest tymczasowe dodanie wartości do tabeli opcji, odczytanie jej, a następnie usunięcie jej, gdy jest już dostępna. został pobrany?
Nasze opcje opcji tymczasowych
Osobiście nie mam silnej opinii na temat tego, czy jest to coś złego, czy nie. Jeśli taki jest charakter tego, jak działa fundament, na którym pracuję nad rozwiązaniem, to pójdę z tym.
Po pierwsze, tak zazwyczaj robię to w WordPressie:
1 Tworzenie tymczasowej opcji
Najpierw konfiguruję funkcję, która jest podłączona do update_option. Pozwala to przyjrzeć się aktualizowanej opcji, jej starej i nowej wartości.
<?php
public function init() {
add_action(
'update_option',
array( $this, 'manage_temporary_option' ),
10, 3
);
}
W funkcji mogę zajrzeć i zobaczyć, czy konkretna opcja jest zapisywana. Jeśli nie, to mogę to po prostu zignorować; w przeciwnym razie mogę na to spojrzeć i rozpocząć pracę z opcją tymczasową.
<?php
public function manage_temporary_option( $option_name, $old_value, $new_value) {
if ('an_irrelevant_option' !== $option_name) {
return;
}
$url = 'page-from-which-we-expect-to-come.php';
if ($url === $_SERVER['REQUEST_URI']) {
update_option(
'our_temporary_option',
$new_value
);
}
}
Ale co przyniosłaby opcja tymczasowa?
2 Opcja dla opcji tymczasowych
Załóżmy, że masz opcję we wtyczce, która jest włączona. Być może wymaga to od użytkownika wprowadzenia pewnych informacji przed przejściem przez resztę procesu.
Przykład: załóżmy, że pracujesz nad obsługą kasy i chcesz zmusić użytkowników do utworzenia konta, ale istnieje opcja, która umożliwia klientom realizację transakcji bez tworzenia konta.
Jedną z implementacji, z której moglibyśmy skorzystać, jest:
- Przed załadowaniem strony kasy sprawdź, czy użytkownik może dokonać kasy jako gość.
- Jeśli tak, zachowaj oryginalną wartość opcji w opcji tymczasowej.
- Zmień oryginalną wartość, aby wymagała utworzenia konta.
- Po zakończeniu procesu kasowania skopiuj wartość z opcji tymczasowej do opcji oryginalnej.
- Usuń opcję tymczasową.
Jest to podobne do całego ćwiczenia w C, kiedy potrzebujesz wskaźnika do zamiany dwóch liczb (dla każdego, kto pamięta lub kto to zrobił).
Nasza najlepsza opcja?
Opisany powyżej proces jest tylko przykładem i nie ma być ostatecznym sposobem na zachowanie tymczasowych wartości. Po drugie, przykład kasy nie ma na celu powiązania tego posta z eCommerce.
Zamiast tego ma zapewnić konkretny przypadek użycia, kiedy przechowywanie tymczasowych opcji jest przydatne i jak możemy to zrobić.
Pozostaje więc pierwotne pytanie: biorąc pod uwagę sposób działania WordPressa, brak sesji i brak gwarancji niektórych funkcji przeglądarki, takich jak localStorage, czy tymczasowe opcje w tabeli opcji są naszym najlepszym rozwiązaniem?