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:
wp_options
tafelwp_options
tafelwp_options
tafelIk 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.
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!
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 wp_options
tabel is gevuld met een van de drie bronnen:
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 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.
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:
wp_options
tafel)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.
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.