Inzicht in en werken met de WordPress-optietabel

In de eerdere delen van deze serie hebben we gekeken naar de tabellen in de WordPress-database en naar de onderlinge relaties. 

In dit deel behandel ik een tabel die anders is dan de andere - de wp_options tafel. Zoals je in het onderstaande schema kunt zien, is dit de enige tabel die op zichzelf staat:

De optietabel slaat een ander soort gegevens op uit de andere tabellen: in plaats van gegevens over de inhoud van uw site op te slaan, worden gegevens over de site zelf opgeslagen. Gegevens worden geschreven naar de optietabel met behulp van de Options API of de Settings API, die beide bestaan ​​uit een reeks functies die worden gebruikt om gegevens uit deze tabel toe te voegen, bij te werken en te verwijderen. 

U kunt waarden toevoegen aan bestaande opties en u kunt ook nieuwe records toevoegen aan de tabel wanneer u nieuwe opties wilt maken.

 In deze tutorial zal ik kijken naar de verschillende aspecten van de optietabel en hoe u ermee omgaat:

  • Toegang tot de wp_options tafel
  • Structuur van de wp_options tafel
  • De wp_options tafel
  • De opties-API
  • De instellingen-API

Ik zal alleen een overzicht geven van de API's en hoe ze omgaan met de optietabel. Als je meer wilt weten, lees dan de Tom McFarlin-serie over de Settings API. 

Toegang tot de tabel wp_options

Als de wp_options tabel slaat gegevens op die gerelateerd zijn aan de installatie en het beheer van de site als geheel, de toegang hiertoe is beperkt. Om de instellingen en opties te kunnen wijzigen, moeten gebruikers beschikken over de manage_options vermogen. De enige standaardgebruikersrol met deze mogelijkheid is de beheerdersrol (en in Multisite, de rol van netwerkbeheerder). 

Dit betekent dat als u opties moet toevoegen waartoe andere gebruikersrollen toegang hebben, u de manage_options vermogen voor hen. Dit brengt risico's met zich mee, dus doe het alleen als je het zeker weet!

Structuur van de tabel wp_options

De optietabel heeft een vergelijkbare structuur als de drie metadatatabellen. Het heeft vier velden:

  • option_ID
  • option_name
  • Optie waarde
  • autoload - geeft aan of de optie automatisch wordt geladen bij het laden van elke pagina - standaard ingesteld op Ja in een enkele site-installatie en Nee in Multisite.

Elke record in de option_name veld heeft een unieke waarde: als u meer dan één waarde toevoegt aan een optie, slaat WordPress dit op in een array in de Optie waarde veld. Een goed voorbeeld hiervan is de active_plugins optie, waarin een reeks plug-ins is opgeslagen die op uw site zijn geactiveerd.

Bij het toevoegen, bewerken of verwijderen van gegevens in de wp_options tabel, moet u altijd het option_name, zoals ik later in deze tutorial laat zien.

De tabel wp_options invullen

De wp_options tabel is gevuld met een van de drie bronnen:

  • de standaardinstellingenschermen
  • thema opties schermen
  • instellingen en optieschermen die u toevoegt via plug-ins

Er zijn een aantal opties ingebouwd in WordPress - je kunt ze allemaal zien in de Optie Referentie. Maar u kunt ook uw eigen maken.

Als u nieuwe opties in uw thema of plug-in wilt maken, gebruikt u de Options API of de Settings API. Ik behandel deze hieronder in meer detail.

De Options API gebruiken

De Options API bestaat uit acht functies waarmee u opties kunt toevoegen, krijgen, bijwerken of verwijderen:

Functie parameters Notes
add_option () $ optie$ value$ verouderd$ autoload
Enkel en alleen $ optie Is benodigd. Als er een bestaand record is met uw $ optie parameter als de waarde van zijn option_name veld, WordPress voegt uw toe $ value naar een array in de Optie waarde veld voor die record, anders maakt het een nieuw record.
delete_option () $ optie Verwijdert alle velden voor die optie
get_option () $ optie$ default
$ default (optioneel) is de standaardwaarde die moet worden geretourneerd als er geen waarde wordt opgeslagen voor de optie in de database.
update_option () $ optie$ new_value
$ new_value is de waarde die de Optie waarde veld-
add_site_option () $ optie$ value
Gelijkwaardig aan add_site_option () maar voegt de optie netwerkwijd toe in Multisite (wat betekent dat de optie is opgeslagen in de wp_options tafel en niet de wp_XX_options tafel waar XX is het site-ID). $ autoload is niet inbegrepen omdat site-opties niet automatisch in Multisite kunnen worden geladen en dit kan niet worden genegeerd.
delete_site_option () $ optie
Hetzelfde als delete_option () maar werkt netwerkbreed in Multisite.
get_site_option () $ optie$ default , $ use_cache
Gelijkwaardig aan get_option () maar haalt de netwerkbrede optie in Multisite op.
update_site_option () $ optie$ value
Identiek aan update_option () maar werkt netwerkbreed in Multisite.

Houd er rekening mee dat u bij het maken van opties, via de Options API of de Settings API, records zonder waarde kunt creëren in de Optie waarde veld. Hierdoor kunnen sitebeheerders dat veld op een later tijdstip invullen.

De Settings API gebruiken

Naast de Options-API kunt u ook de Settings API gebruiken om te communiceren met gegevens in de wp_options tafel. Met de instellingen-API kunt u instellingen maken die sitebeheerders kunnen gebruiken om gegevens toe te voegen of bij te werken in de optietabel - het voegt een gebruikersinterface toe aan uw opties.

De Settings API heeft meer te bieden dan de Options API, dus ik zal hier niet in detail op ingaan, maar in essentie heeft het drie elementen:

  • de instelling (de gegevens in de wp_options tafel)
  • het veld (dat wordt gebruikt om gegevens toe te voegen en te bewerken)
  • het gedeelte met instellingen, dat een groep verwante velden is.

De twee functies in de Settings API die rechtstreeks communiceren met de wp_options tabel zijn als volgt:

Functie parameters Notes
register_setting () $ option_group$ option_name$ sanitize_callback
De $ option_name parameter verwijst naar de option_name veld in de wp_options tafel; de andere parameters werken samen met andere functies in de instellingen-API
unregister_setting () $ option_group$ option_name$ sanitize_callback
Instellingen afmelden van de wp_options tabel - normaal gebruikt met deactiveringshaken voor thema's of plug-ins.

Deze functies voegen geen waarden toe aan de opties in de wp_options tabel, maar ze maken instellingen die dan kunnen worden toegevoegd aan waarden via andere functies in de Settings API.

Samenvatting

De wp_options tabel is uniek in WordPress-databasetabellen omdat deze geen relatie delen met een van de andere tabellen. Dit komt omdat het gegevens over de site of het netwerk opslaat, en niet de inhoud. Voor interactie met de optietabel kunt u de functies in de Options API of de Settings API gebruiken en kunt u ook gebruikmaken van functies die datanetwerkbreed toevoegen in een multisite-isolatie.

In het laatste deel van deze serie zal ik kijken naar Multisite, omdat het een aantal extra databasetabellen gebruikt die tot nu toe niet in deze serie zijn behandeld, en ook meerdere exemplaren van elk van de kerntabellen maakt, één voor elke site.