Förstå och arbeta med WordPress-alternativtabellen

I de tidigare delarna av denna serie tittade vi på tabellerna i WordPress-databasen och relationerna mellan dem. 

I den här delen kommer jag att täcka ett bord som skiljer sig från de andra - wp_options tabell. Som du kan se från diagrammet nedan är det den enda tabellen som sitter i sig:

Alternativtabellen lagrar en annan typ av data från de andra tabellerna: i stället för att lagra data om innehållet på din webbplats lagras data om själva webbplatsen. Data skrivs till alternativtabellen med alternativ API eller inställnings API, som båda består av en uppsättning funktioner som används för att lägga till, uppdatera och ta bort data från den här tabellen. 

Du kan lägga till värden i befintliga alternativ och du kan även lägga till nya poster i tabellen när du vill skapa nya alternativ.

 I denna handledning ser jag på olika aspekter av alternativtabellen och hur du interagerar med det:

  • Tillgång till wp_options tabell
  • Strukturen av wp_options tabell
  • Populera wp_options tabell
  • Alternativ API
  • Inställnings API

Jag ska bara ge en översikt över API: erna och hur de interagerar med alternativtabellen - om du vill lära dig mer, läs Tom McFarlins serie i inställnings API. 

Tillgång till wp_options-tabellen

Som den wp_options tabellen lagrar data som är relaterat till installationen och administrationen av webbplatsen som helhet, tillgången till den är begränsad. För att kunna ändra inställningar och alternativ måste användarna ha manage_options förmåga. Den enda standardanvändarrollen med denna kapacitet är administratörsrollen (och i Multisite, nätverksadministratörsrollen). 

Det betyder att om du behöver lägga till alternativ som andra användarroller har tillgång till måste du tilldela manage_options förmåga till dem. Detta bär risker, så gör det bara om du är säker!

Strukturen i wp_options-tabellen

Alternativstabellen har en liknande struktur som de tre metadataborden. Den har fyra fält:

  • option_ID
  • OPTION_NAME
  • option_value
  • autoload - specificerar om alternativet automatiskt laddas på varje sida som belastar - som standard till ja i en enda installation och Nej i Multisite.

Varje post i OPTION_NAME Fältet kommer att vara ett unikt värde: Om du lägger till mer än ett värde till ett alternativ, lagras WordPress i en array i option_value fält. Ett bra exempel på detta är active_plugins alternativ, som lagrar en rad plugins aktiverade på din webbplats.

När du lägger till, redigerar eller tar bort data i wp_options bord måste du alltid ange OPTION_NAME, som jag visar senare i denna handledning.

Följer wp_options-tabellen

De wp_options bordet är befolat från en av tre källor:

  • standardinställningarna skärmarna
  • tema alternativ skärmar
  • inställningar och alternativ skärmar som du lägger till via plugins

Det finns ett antal alternativ inbyggda i WordPress - du kan se alla dessa i alternativreferensen. Men du kan också skapa din egen.

Om du vill skapa nya alternativ i ditt tema eller plugin skulle du använda alternativ API eller inställnings API. Jag kommer att täcka dem mer i detalj nedan.

Använda Options API

Alternativ API består av åtta funktioner som låter dig lägga till, få, uppdatera eller ta bort alternativ:

Fungera parametrar anteckningar
add_option () $ alternativ$ värde$ föråldrat$ autoload
Endast $ alternativ krävs. Om det finns en befintlig post med din $ alternativ parameter som värdet av dess OPTION_NAME fält kommer WordPress att lägga till din $ värde till en array i option_value fält för den posten, annars skapas en ny post.
delete_option () $ alternativ Tar bort alla fält för det alternativet
get_option () $ alternativ$ default
$ default (valfritt) är standardvärdet att returnera om inget värde lagras mot alternativet i databasen.
update_option () $ alternativ$ new_value
$ new_value är det värde som kommer att fylla i option_value fält
add_site_option () $ alternativ$ värde
Liknande add_site_option () men lägger till alternativet nätverksövergripande i Multisite (vilket betyder att alternativet är lagrat i wp_options bord och inte den wp_XX_options bord där XX är webbplatsens ID). $ autoload ingår inte som webbplatsalternativ inte autoload i Multisite och detta kan inte överskridas.
delete_site_option () $ alternativ
Samma som delete_option () men arbetar på nätet i Multisite.
get_site_option () $ alternativ$ default , $ use_cache
Liknande get_option () men hämtar nätverksövergripande alternativet i Multisite.
update_site_option () $ alternativ$ värde
Identisk med update_option () men arbetar på nätet i Multisite.

Observera att när du skapar alternativ, antingen via Alternativ API eller Inställningar API, kan du skapa poster utan värde i option_value fält. Detta gör det möjligt för webbplatsadministratörer att fylla i det fältet vid en senare tidpunkt.

Använda inställnings API

Förutom API-alternativet kan du också använda inställnings API för att interagera med data i wp_options tabell. Med inställnings API kan du skapa inställningar som webbplatsadministratörer kan använda för att lägga till eller uppdatera data i alternativtabellen - det lägger till ett användargränssnitt för dina alternativ.

Inställnings API har mer än det Alternativ API så jag kommer inte att täcka det i detalj här, men i huvudsak har det tre element:

  • inställningen (data i wp_options tabell)
  • fältet (som används för att lägga till och redigera data)
  • Inställningsdelen, som är en grupp relaterade fält.

De två funktionerna i inställnings API som interagerar direkt med wp_options bordet är enligt följande:

Fungera parametrar anteckningar
register_setting () $ option_group$ OPTION_NAME$ sanitize_callback
De $ OPTION_NAME parameter hänvisar till OPTION_NAME fält i wp_options tabell; De andra parametrarna interagerar med andra funktioner i inställnings API
unregister_setting () $ option_group$ OPTION_NAME$ sanitize_callback
Deregisters inställningar från wp_options bord - vanligtvis används med inaktivering krokar för teman eller plugins.

Dessa funktioner lägger inte till värden i alternativen i wp_options tabellen, men de skapar inställningar som kan innehålla värden till dem via andra funktioner i inställnings API.

Sammanfattning

De wp_options Tabellen är unik bland WordPress-databasborden, eftersom den inte delar ett förhållande till någon av de andra tabellerna. Detta beror på att det lagrar data om webbplatsen eller nätverket, och inte innehållet. För att interagera med alternativtabellen kan du använda funktionerna i Alternativ API eller Inställnings API och du kan också använda funktioner som lägger till datanätverk i en Multisite-isolering.

I den sista delen av denna serie ser jag på Multisite, eftersom den använder några extra databastabeller som hittills inte har täckts i denna serie och skapar också flera instanser av varje kärntabell, en för varje sida.