Het onbesproken probleem van shortcodes

Geschreven door

in

The-Unspoken-Problem-of-Shortcodes

Shortcodes zijn een van de kroonjuwelen van WordPress. Shortcodes vormen de brug tussen ontwikkelaars en websitemakers, waardoor mensen vrijwel overal waar ze maar willen uitgebreide stukken inhoud kunnen plaatsen. Plugin-makers zijn dol op shortcodes, omdat dit meer flexibiliteit biedt in hoe en waar hun gebruikers hun inhoud weergeven.

Als je niet weet wat shortcodes zijn en hoe ze eruitzien: het is die archaïsche code-achtige tekst tussen vierkante haken. Ze zien er ongeveer zo uit:

Deze specifieke shortcode heet de embed-shortcode en is standaard ingebouwd in WordPress. Deze specifieke shortcode sluit de video van de URL in je inhoud in. Kopieer en plak de bovenstaande shortcode gewoon op je site als je het eens wilt uitproberen.

Wat er achter de schermen gebeurt, is dat wanneer WordPress een shortcode in je inhoud tegenkomt, deze wordt verwerkt en omgezet in iets anders. In ons bovenstaande geval, telkens wanneer een

shortcode wordt gedetecteerd, neemt WordPress de URL in de shortcode en controleert deze aan de hand van een aantal beschikbare contentproviders. Wanneer het er een vindt, haalt het de juiste iframe-insluitcode op en geeft het die in plaats daarvan weer.

Dus wat is hier het probleem? Het klinkt eenvoudig genoeg: je voert gewoon een korte tekst met haken in en je bent klaar.

Maak kennis met de Shortcode API..

Shortcodes in overvloed

De Shortcode API maakt het maken van shortcodes mogelijk voor ontwikkelaars. Hierdoor kunnen ontwikkelaars hun eigen shortcodes toevoegen aan hun plugins.

Dit is geweldig: met slechts een kort code-achtig fragment (vandaar de naam “shortcode”) kunnen zowel beginners als gevorderde gebruikers vrijwel elk gewenst type inhoud overal plaatsen.

WordPress heeft standaard slechts een handvol shortcodes. Het is gemakkelijk om ze uit het hoofd te typen omdat het er maar een paar zijn. Maar als je een paar plugins installeert, loopt het aantal shortcodes al snel op tot een dozijn of meer, en in sommige gevallen zelfs meer dan honderd. Elke shortcode heeft zijn eigen set attributen en instructies over hoe je ze moet gebruiken. Elke plugin heeft waarschijnlijk wel een vorm van documentatie over hoe al hun shortcodes werken en vermeldt alle beschikbare parameters voor elke shortcode. Maar je zou gek zijn als je probeert alle shortcodes en hun attributen uit je hoofd te leren.

Het probleem is dat er geen centrale plek is waar je alle beschikbare shortcodes op je site kunt vinden en hoe je ze moet gebruiken.

Sommigen proberen het probleem op te lossen

Sommige plugins proberen dit probleem op te lossen door al hun eigen shortcodes in een gemakkelijk toegankelijke dropdown te presenteren. Als je er vervolgens op klikt, wordt de shortcode weergegeven, compleet met alle mogelijke attributen daarvoor. Het is niet meer nodig om het uit het hoofd te leren, en dat is een goede zaak.

Screen-Shot-2016-06-22-at-11.27.09-AM

Sommigen gaan verder en voegen een instellingen-pop-upformulier toe met selectievakjes en kleurkiezers om de attributen van de shortcode in te vullen.

Screen-Shot-2016-06-22-at-11.28.54-AM

Deze oplossing werkt min of meer. Elke plugin somt echter alleen zijn eigen shortcodes op. Dus als elke plugin zijn eigen vorm van shortcode-kiezer maakt, zul je ongetwijfeld momenten meemaken waarop je meerdere shortcode-kiezers op je scherm hebt (dit is mij al eens overkomen).

Screen-Shot-2016-06-22-at-11.22.41-AM

Met andere woorden: elke plugin doet zijn eigen ding en implementeert zijn eigen oplossing voor zijn eigen shortcodes. Sommige plugins voegen een nieuwe knop toe naast de knop “Media toevoegen”, of een nieuwe knop binnen TinyMCE.

Dus nu denk je misschien: “Waarom verzamel je niet ook gewoon de shortcodes van andere plugins en neem je die ook op in je dropdown / shortcode-kiezer?” Nou, dat is precies wat ik dacht. Maar dit is gemakkelijker gezegd dan gedaan. Ik zal zo uitleggen waarom, maar laten we eerst eens kijken hoe een ideale oplossing eruit zou zien.

De ideale oplossing

Het perfecte plan zou zijn om een plugin te maken die alle beschikbare shortcodes op je site verzamelt, je vervolgens de lijst presenteert en je ook helpt bij het invullen van alle attributen. En telkens wanneer je een nieuwe plugin installeert, worden al die nieuw geïntroduceerde shortcodes ook aan je gepresenteerd.

Stel je een centrale plek voor waar al je shortcodes worden geplaatst voor gemakkelijke toegang. Bij elke shortcode zou worden beschreven wat deze doet en bij welke plugin deze hoort. Stel je vervolgens voor dat voor elk beschikbaar attribuut er een label, een geschikte manier om er een waarde voor te selecteren en een beschrijving zou zijn. Je krijgt dropdowns, kleurkiezers, keuzerondjes, schakelaars en van alles te zien.

Zoiets zou ons leven als website- en contentmakers gemakkelijker maken. Niet langer verschillende documentaties of verschillende delen van je beheeromgeving raadplegen om een gegenereerde shortcode te kopiëren voor een slider die je wilt gebruiken.

De kanttekening

Helaas is het op dit moment vrij moeilijk om zoiets te doen. Er is geen waterdichte manier om alle details van een shortcode te achterhalen. Je kunt een lijst krijgen van alle shortcodes, maar alleen van hun daadwerkelijke tags/namen; je kunt geen aanvullende details over hen krijgen, zoals een lijst van attributen, wat ze doen en hun types – zoals een string, een kleur of een nummer. Evenmin kun je ook maar iets van een beschrijving voor elk attribuut krijgen.

Opmerking voor de ontwikkelaars: ja, er is een nieuw toegevoegd derde argument voor de functie shortcode_atts, maar het is geen verplicht argument. Dus tenzij elke plugin-ontwikkelaar ter wereld dit implementeert, hebben we nog steeds geen betrouwbare manier om alle attributen van een shortcode te bepalen.

De Shortcode API biedt geen mogelijkheden voor het toevoegen van shortcode-beschrijvingen, typecasting van attributen of attribuutbeschrijvingen. En tenzij WordPress zelf een centrale plek toevoegt voor toegang tot shortcodes, betwijfel ik of deze mogelijkheid er ooit zal komen.

Conclusie

Op dit moment wordt de taak van het organiseren van shortcodes overgelaten aan elke afzonderlijke ontwikkelaar. Tenzij er binnen WordPress een centrale methode wordt ontwikkeld, kun je verwachten dat je meerdere “Shortcode toevoegen”-knoppen in je backend blijft zien. Of zoiets al dan niet aan de WordPress Core moet worden toegevoegd, is op zichzelf al een enorme discussie.

Een alternatief

Er zijn pagebuilder-plugins die dit anders aanpakken. In plaats van shortcodes programmatisch te detecteren, hebben ze shortcode-mappers waarin gebruikers elk detail van een shortcode handmatig kunnen invoeren. Zodra dat is gedaan, wordt deze beschikbaar binnen de pagebuilder. Hoewel  dit werkt, zijn deze alleen beschikbaar op je eigen site.

Wij hier bij Page Builder Sandwich zijn bezig met het ontwikkelen van iets dat dit shortcode-raadsel hopelijk kan oplossen. Meld je hieronder aan voor onze nieuwsbrief om op de hoogte te blijven van onze voortgang.