✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Databasfrågor för att snabbt uppdatera data, del 1

7

Det är inte första gången jag nämner detta, men en av utmaningarna som kommer med att prata om att skriva direkta databasfrågor för att uppdatera information i WordPress-databasen är att du lämnar dig själv öppen för något som:

Ja, men det finns ett API för att göra något sådant.

Och i många fall stämmer det. Jag är ett stort fan av att använda dem också. Men det finns tillfällen då direkta, parametriserade databasfrågor kan vara ett mer optimalt val.

Databasfrågor för att snabbt uppdatera data, del 1

Nej, det är inte en databas men skulle det inte vara fantastiskt om de såg ut så här? Foto av Tobias Fischer på Unsplash

Detta är naturligtvis beroende av den miljö som du arbetar i kraven för ditt projekt.

Så det här är ännu ett inlägg som kommer att vara en illustration av hur man använder $wpdb för att snabbt uppdatera information baserat på metadata (utan att använda något som WP_Query eller WP_Meta_Query för att hantera det).

Databasfrågor för att snabbt uppdatera data, del 1

Jag kommer att dela upp det här i två delar eftersom den initiala funktionen som jag ska visa dig gör mer än en sak.

Jag är inget fan av det.

För det andra är det också en möjlighet till hur du kan omdesigna funktioner för att bete sig på ett mer objektorienterat sätt (vilket är något som jag är ett fan av och som jag alltid är glad att marknadsföra ).

Men låt mig nu förklara problemet

  1. Jag importerar lite information från ett tredjeparts-API.
  2. Informationen mappas till tabellen wp_posts såväl som tabellen wp_postmeta.
  3. Det finns vissa metadata som är kriterier för att diktera statusen för ett inlägg. Eller, mer direkt, om en bit metadata finns, bör ett inlägg ha sin poststatus inställd på utkast så att det inte visas i huvudfrågan.

För att komma till rätta med detta måste två saker hända:

  1. Vi behöver ID:n för inläggen,
  2. Och vi måste ändra statusen på inläggen.

Innan vi ställer in frågorna och resten av koden, låt oss säga att meta-nyckeln vi använder kreativt kallas acme-status. Och med det, låt oss komma igång.

1 Ta tag i inläggs-ID:n med den associerade metanyckeln

Först skapar vi en funktion som heter setInactivePosts. Detta är mer allmänt än det skulle vara om du arbetar inom en specifik domän, men du förstår poängen.

Sedan kommer vi att ställa in en fråga som kommer att hämta alla inläggs-ID:n som har den specifika metanyckeln :

Här har vi en rad resultat. Men innan vi gör något måste vi se till att vi har data som vi kan arbeta på.

2 Avsluta tidigt?

Innan vi går vidare med att uppdatera informationen bör vi dock kontrollera om det finns några resultat. Och om det inte finns?

Då kan vi hoppa ut.

3 Uppdatera poststatus

Men om det finns resultat bör vi gå igenom dem och uppdatera deras inläggsstatus :

Så hur ser det ut tillsammans?

4 Alla tillsammans

När vi sätter ihop denna funktion som är större än nödvändigt, ser du det här :

Men i nästa inlägg kommer vi att omorganisera detta lite för att göra det mer objektorienterat.

En anmärkning för databasadministratörer

För de av er som är väl bevandrade i SQL-fu, då vet du att detta sannolikt kan hanteras i en enda fråga; Syftet med detta inlägg och inlägget efter det är dock tvåfaldigt:

  1. För att visa hur man använder $wpdb för att uppnå något snabbt,
  2. Att visa hur man bryter ut en procedurmetod att göra något till en objektorienterad metod att göra något.

Med det sagt, tack för alla frågor. 👍🏻

Inspelningskälla: tommcfarlin.com

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer