✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Zapytania do bazy danych w celu szybkiej aktualizacji danych, część 1

8

To nie pierwszy raz, kiedy o tym wspominam, ale jednym z wyzwań związanych z pisaniem bezpośrednich zapytań do bazy danych w celu aktualizacji informacji w bazie danych WordPressa jest to, że otwierasz się na coś takiego:

Tak, ale jest API do zrobienia czegoś takiego.

I w wielu przypadkach to prawda. Ja też jestem wielkim fanem ich używania. Ale zdarzają się sytuacje, w których bezpośrednie, sparametryzowane zapytania do bazy danych mogą być bardziej optymalnym wyborem.

Zapytania do bazy danych w celu szybkiej aktualizacji danych, część 1

Nie, to nie jest baza danych, ale czy nie byłoby wspaniale, gdyby wyglądały tak? Zdjęcie Tobiasa Fischera na Unsplash

Jest to oczywiście uzależnione od środowiska, w którym pracujesz, wymagań projektu.

Jest to więc kolejny post, który będzie ilustracją tego, jak używać $wpdb do szybkiej aktualizacji informacji na podstawie metadanych (bez użycia czegoś takiego jak WP_Query lub WP_Meta_Query do obsługi tego).

Podzielę to na dwie części, ponieważ początkowa funkcja, którą pokażę, robi więcej niż jedną rzecz.

Nie jestem tego fanem.

Po drugie, jest to również okazja do tego, jak można przeprojektować funkcje, aby zachowywały się w sposób bardziej obiektowy (co jest czymś, co jestem fanem i co zawsze chętnie promuję ).

Na razie jednak przedstawię problem pod ręką

  1. Importuję trochę informacji z zewnętrznego API.
  2. Informacje są mapowane do tabeli wp_posts oraz tabeli wp_postmeta.
  3. Istnieją pewne metadane, które są kryteriami dyktowania statusu posta. Lub bardziej bezpośrednio, jeśli istnieje fragment metadanych, post powinien mieć status wersji roboczej, aby nie pojawił się w głównym zapytaniu.

Aby rozwiązać ten problem, muszą się wydarzyć dwie rzeczy:

  1. Potrzebujemy identyfikatorów postów,
  2. I musimy zmienić status postów.

Zanim skonfigurujemy zapytania i resztę kodu, załóżmy, że metaklucz, którego używamy, nazywa się twórczo acme-status. I z tym zacznijmy.

1 Chwyć identyfikatory postów za pomocą powiązanego klucza meta

Najpierw utworzymy funkcję o nazwie setInactivePosts. Jest to bardziej ogólne niż w przypadku pracy w określonej domenie, ale rozumiesz.

Następnie skonfigurujemy zapytanie, które pobierze wszystkie identyfikatory postów, które mają ten konkretny klucz meta :

Tutaj mamy szereg wyników. Ale zanim cokolwiek zrobimy, musimy upewnić się, że mamy dane, na których możemy operować.

2 Wyjdź wcześniej?

Zanim jednak przejdziemy do aktualizacji informacji, powinniśmy sprawdzić, czy są jakieś wyniki. A jeśli nie?

Wtedy możemy się uchylić.

3 Zaktualizuj status postu

Ale jeśli są wyniki, powinniśmy je przejrzeć i zaktualizować ich status postu :

Więc jak to wygląda razem?

4 Wszyscy razem

Kiedy połączymy tę większą niż konieczna funkcję, zobaczysz :

Ale w następnym poście zmienimy to nieco, aby było bardziej zorientowane obiektowo.

Uwaga dla administratorów baz danych

Dla tych z was, którzy są dobrze zorientowani w SQL-fu, wiecie, że można to prawdopodobnie rozwiązać za pomocą jednego zapytania; jednak cel tego posta i postu po nim jest dwojaki:

  1. Aby pokazać, jak używać $wpdb do szybkiego osiągnięcia czegoś,
  2. Pokazać, jak przekształcić proceduralną metodę robienia czegoś w obiektową metodę robienia czegoś.

Mając to na uwadze, dziękuję za wszystkie pytania. 👍🏻

Źródło nagrywania: tommcfarlin.com

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów