Grote imports, kleine imports, doe ze in je WordPress machine
Dus graag een heel hartelijke plaats voor de wannanomelie Gijmer. Ik ga die introductie op mijn website zetten, dankjewel. Gijmer Hoortjenes, hij heeft me heel mooi geïntroduceerd. Ik ga het over grote import, kleine import, wat je misschien moet doen. Voor wie die het niet kent, dan ben je heel jong, goed. Ik ga gelijk door, want het is veel meer informatie niet, maar... Ik moet af en toe ook wat adem halen en daar ga ik ook graag de ruimte voortnemen. Een spoorboekje van mijn vriendin overgepikt, zij is een heel lang docent geweest. En dan weten jullie ook waar jullie aan toe zijn. Kort introductie. Algemene knelpunten waar ik door alle... Eigenlijk door de jaren heen ben tegen aangekomen met WPL import. Een plug-in, WPCJW. Wie kent WPCJW? Ok, dat is aardig wat. Wie kent WPL import? Ik ben blij dat jullie zijn gekomen. Ik heb gelijk al een vraag gesteld die pas later in de presentatie hoort. En nog een paar kleine tips aan het einde. In het begin zat ik zo bij met migraties en imports mijn hoofd oplofte. Ik zat wat te vloeken hier en daar en te grommen. En dat is later, is dat omgezet dat ik vrolijk was. Als ik dus niet vrolijk was, dan was ik dus met imports bezig een paar jaar geleden. En dat is nu wel een stuk plezieriger geworden. De eerste gaat altijd met mijn ogen dicht en dan hopen dat het goed gaat. Maar dat doe je op de stediging-opgeving, dus dan hoef je geen zorgen te maken. Ierste tip. Wie importeert zelf? Wie voert het zelf uit? Netjes. Wie laat het doen? Ja, ja, ja, laat het door mij doen. Oké, ja, nee, het is wel zo. Om hoeveel data gaat het dan? Wie doet de honderd dingen imputeren? Honderd? Duizend? Flink? Gaan we ook over de tienduizend? Dat zijn flinke getallen. Hoe kunnen we dus importeren? We hebben op één manier WPC-Li. En aan de andere kant WPC-AL-Import. In het geval van WPC-Li. Ik vind het als developer het laag drempeliger. Ik heb meer controle over wat ik uitvoer. En de code heeft in vanuit mij perspectief wat compacte, makkelijker de overzien alles. De runtime, dus zeg maar de lengte waarop één import duurt, de tijd daarvan, is een stuk sneller.  Ook de reden waarom ik voorkeur geef aan WPC-Li-Imports, maar soms kan dat niet altijd. Nadal is, je hebt een developer nodig. Je moet het inhuuren en dat kan aardig wat knaken kosten. Als je iets wilt wijzigen, dan merk ik ook dat het wat logger is, want je moet je developer in schakelen. En die moet de wijziging doorvoeren en het moet goed gekeurd worden. Met WPC-AL-Import heb je daar als klant, heb je als klant iets meer controle over. Ik heb best wel veel controle over wat je wilt importeren, welk velk je je waar wilt hebben en zaken combineren. Dus je hebt helemaal geen developer nodig, waardoor in principe het budget op kan gaan aan leukere dingen. Dus je bent flexibeler, alleen het is traag. Ik heb echt mega trage imports gehad, service die eruit klapte. Memory die service die uit zijn memory liepen en daarom was het in het begin niet mijn voorkeursmetode. En door de jaren heen heb ik dat wel weten op te lossen, dus die traagheid en service die eruit klapte. Die probeer ik in deze presentatie voor jullie wat die situatie te voorkomen met de tips die ik jullie kan geven. En het nadeel, ik weet niet of het een nadeel is, maar als klantzijnde of als je het zelf wilt importeren heb je best wel veel kennis nodig van WordPress zelf. Dus je moet weten welke metafelden, hoe de metafelden heten, een joost metadaten, hoe die wordt opgeslagen. Moet je in joost gaan opzoeken hoe die heten en dat uitgaan zit te peuselen, ondanks dat de drop-down van WPC-AL import best wel veel helpt. Wie importeert het niet met PAP? Dus niet met WPL import, niet met een plug-in of niet met WPC-AL. Wat heb je dan gedaan? WPC-AL, ja, het combineren, ja, dat zeker. Barry zegt, het is super snel, go of ruby of pipen, die zijn, ja, het is een stuk sneller dan PAP, maar je hebt dan wel een developer nodig die in die taal kan programmeren. En als je in een WordPress-toco zit met heel veel PAP-developers, heel veel die frontend developers die niet misschien super sterk zijn met PAP, dan kan dit wel een nadeel zijn. Maar als het één keer uitgevoerd wordt en je hoeft er niet meer naar om te kijken, vooral, vooral doen.  Ik wil dus komen dat jullie er zo bij gaan zitten als jullie een import gaan uitvoeren. En ik heb af en toe ook een foto tussen doorstaan dat ik weet dat ik aan en moet halen, dus bij deze. Oké, algemene knalpunten. Actions, ik noem ze altijd wel automatische processen. Dat zijn processen die op de achtergrond worden uitgevoerd. Wie is bekend met de Actions? Ik heb het idee dat er wel veel zijn. Ja, het zijn er best wel veel, maar het worden bijvoorbeeld als je een bericht opslaat of een custom posttijd, dan voor het bijvoorbeeld een facet-wp de data door naar hun eigen index. Caching, WP Rocket bijvoorbeeld, kleert de cache dat je wel de up-to-date pagina te zien krijgt aan de voorkant. Of WooCommerce, die genereert een afbeelding achter onder water of die zet hem in ieder geval in de queue. Ik kan ervoor zorgen dat al deze automagische processen ervoor zorgen dat de server onverger wordt getrokken. Dit is gewoon puur eventjes als illustratie dat je ze ook via WP-wp uit kan zetten. In dit geval facet-wp, professored-wp, dat kan je ook aan het einde van een import uitvoeren. Het schildt echt een boerwerk. Ik heb dat bijvoorbeeld, was met Justin, hadden we een import draaien. Ik had op mijn lokale omgeving, had ik het zonde WP Rocket, had ik hem draaien. En toen stond het op de productieserver. Dan kan ik om zondagavond van Justin in de appy. De lood is al heel erg hoog op de server. En toen ik maandag ochtend voordat ik de piste op ging, heb ik nog eventjes het snel opgelost. En toen zoek hij die weer rustig. En dat schildert veel kopzorgen. Maar als je bijvoorbeeld en WPC of en facet-wp hebt zitten, en search-wp erin zitten, en caching en weet ik voor wat allemaal, dan stapelt dat allemaal op. En dan ben je van die tuchtzichtje er zo bij. Andere keer wat gebeurde. Ook puur eventjes illustratie. Wordpress. Wie gebruikt er een thema met hoeveel image sizes heb je gemiddeld op een website? Vijf handjes. Vijf, meer. Tien. Ja, en het is vijftien, wel eens tegengekomen. Nee, gelukkig niet. Moocomus voegt ook nog images toe. Als je een product importeert opnieuw op slaat, dan gaat hij dus 10 keer een nieuwe afbeelding genereren.  Als je ook nog eens een keer je Shortpixel of een een van de andere compressieplugin erop hebt staan, zet hij dat ook nog tijdens je import aan. En ik had een Moocomus webshop, een flinke VPS erop. En die tropt hij gewoon onver, omdat te veel gedoe op de achtergrond werd uitgevoerd. Even kijken. Je kan het via PIP uitzetten. Je kan het ook met WPCJL uitzetten. En dan zeg je gewoon skipplugins. Ik wilde wijzen, maar de bovenste. En dan zeg je, ik wilde VSWP uitzetten of ik wil WP Rocket uitzetten. Bijvoorbeeld met de import, terwijl de caching onverre geniep, hebben we tijdens het import-commando de WP Rocket gewoon uitgezet. En daarmee was het probleem opgelost. En dan aan het einde van je import, kan je nog zeggen, kleer heel mijn cache. Of start heel je VSWP-indexing weer opnieuw of searchwp. Dus dan split je het gewoon in stappen op. En dat scheelt heel veel kopzorgen. Wie heeft dit commando wel eens gebruikt? Of hiervoor dit attribute van skipplugins? Ik hoop dat later meerdere mensen deze gaan gebruiken, want dit is echt ideaal. Ook met die buggen, als ergens een error zit in een plug-in en je wil toch die plug-in uitzetten. En dat kan niet met een error op de terminal. Skipplugins, dan zet die alle plug-ins uit en dan kan je gewoon doorgaan. Afbeeldingen. Ik had het net ook al over de afbeeldingen. Het duurt al best wel lang voordat alle afbeeldingen worden opnieuw worden gerenereerd. Wat ook lang duurt, is als je je afbeeldingen ergens van een remote endpoint afhaalt of eigenlijk van een website. Ik had op een gegeven moment 5 MB foto's. Een product met 5 productafbeeldingen. Dus dat was 20 MB per product importeren plus het genereren, plus het optimaliseren. En zoals ik al zei, die VPS stond in de fik. Dus tip is, als het kan, zorg dat je een kopietje lokaal hebt. Ook misschien van tevoren is alle afbeeldingen downloaden lokaal en ze dan, vanaf je, als je ze in een upload-cache-mapje hebt weggeschreven, imputeer ze er dan vanuit daar. Want dat scheelt echt heel veel tijd. Het is vooral de time-outs waar je issues mee gaat krijgen als je ze online binnenhaalt. Wat het net ook over de image-size is, tijdens het imputeerden kan je ze ook uitzetten.  Dus als je zegt, ik wil dat je geen afbeeldingen genereert, dus je hebt geen webshop, dus je kan niet de ene functie uitzetten van boekomers, maar je wilt gewoon standaard zeggen tegen WordPress. Generer je geen Thumbnail, Medium of Large, dan return je een lege R.E. En dan kan je, aan het einde kan je, met BPCID of met een plug-in, kan je dan de afbeeldingen alsnog genereren. En dan splits je hem weer. Dus eigenlijk is dat opsplitzen van je import in stappen is wel een rode lijn door deze presentatie. Als je toch afbeeldingen, minimaal 1 of 2 wilt genereren, staat er al, doe dan alleen de Thumbnail of Medium-sites en dan laag je tenminste geen 5MB original full-size afbeelding in de frontend en dat scheelt een berg. Dit is voor zowel WPCLE, als met WPL import kan je deze configuratie doorvoeren. Is iemand bekend met term-counting of met comment-counting? Ja. Ramon, wat doet het? Hij gaat inderdaad, op het moment dat er iets bij zit, gaat hij alles na, gaat hij een perretje oplogen in de meta. Dat is iets wat bij import niet altijd gewenst is. Ja, dat is best wel, als je veel producten hebt en veel categorieën of terms, dan gaat kijken hoeveel posts hebben deze categorie of hoeveel comments heeft deze post. En voor elke keer als je een term-update of post-update gaat hij dat uitvoeren. En dat zorgt voor een flinke load en ook hier kan je met WPCLE bijvoorbeeld terms aan het einde hercalculeren. Ik geloof dat dat 15 seconden duurt of misschien 30 seconden en dat is heel veel memory. Dit is een beetje veel code, maar dat is meer puur illustratief. Ik ben blij dat ik wat voor te neem. Uitkunstpreek, hè? Oh, kijk, deze moest ik een stukje verderop bij de tips zetten. Dus ik heb even tussendoor een tip. Wie doet er wel eens Gutenberg, kan te klaar importeren blokken zelf. Jij? Ik vet, kijk. Dit is puur even een voorbeeldje. Ik ga niet uitleggen wat er staat, maar hiermee kan je zelf een kusten-ACF-veld maken en als je dat gelijk in de content impoteert, dan heb je mooi een blok aan de voorkant. Het is best wel wat werk als je dat voor elk blok wilt doen en als je geen custom blokken hebt, dan kan je ook deze plug in gebruiken.  En die is van Tenup, die is nog niet zo super-out, geloof ik. Weet iemand hoe oud die is? Nee, ik ook niet, dus dat moeten we even opzoeken. Dan kan je ook weer achteraf, dan kan je gewoon normaal je paragrafen en je images gewoon old school zoals de busy-wig-editor importeren en dan één keer het commanden uitvoeren en dan maakt hij er allemaal blokken van. Dus dan hoef je niet al die vangen HTML comments zelf op te maken. Even ademen. Dit waren algemeen knelpunten en stiekem ook nog een tipje tussendoor. Ik heb de afgelopen twee jaar ARGWAD WPL Imports gedraaid. WPL Imports met WPL Imports uitgevoerd. Het is een lang woord dus als je ergens WPA IC's staan, dan refereer ik daarnaar. WPL Imports is een plug-in met een user interface en daar kan je een CSV of een X-tel opstand inhangen en dan kan je, met een interface kan je slapen. Dus je kan de titel, kan je naar de titel, de titelveld slapen of de description. Er zijn add-ons voor book-immers, ACF en nog een paar andere waardoor het wat makkelijker wordt om wat dat stukje domainkennis dat je, ja, ik weet niet waar ik het moet plaatsen als Pokémon webshop houden. Ik had hem tegen me de talk met mijn neefje doorgenomen van zes en ik had de Pokémon kaarten als voorbeeld gegeven. En hij snapt hem, dus ik was blij dat het laag drempelig genoeg was. Het is een kwestie van slepen en dan kan je het ook uitvoeren. Dit trucje pas ik aardig vaak toe met klanten die zelf heel veel controle uit willen voeren op de import of heel veel zaken wijzigen. Google Spreadsheets, wie gebruikt dat best wel vaak? Ja, en die kan je dus publiceren. Als je die publiceert krijg je een andere URL. En dat was ik heel even, was ik aardig wat lang mee aan het zoeken. Publiceer, ik weet niet of je data dan ook gepubliceerd wordt en geindexeerd kan worden via Google Search. Weet iemand dat? In het geval van mijn klanten zijn dit echt gewoon producten die vrij toegankelijk zijn want ze komen toch sowieso wel op de webshop. Dus het is niet... Dat gebeurt niet? Evoila, dank je wel. Schoon Excel, Spreadsheets als je het kent. Titels, fotograa...  In dit geval was het een topschilderij.nl die hebben foto's online staan met allemaal varianten, verschillende sizes, zeg maar, weg aan de muur, maar dan met unieke foto's. Trukkies die ik daarin toepas om eigenlijk zelf te automatiseren is klommen gewoon met vermulletjes aan elkaar plakken. Dus in dit geval heb ik de hoofdcategorie fotografen en dan is de naam van de fotograaf ook een categorie want dan heb je mooi een overzicht spagen van deze fotograaf zijn foto's. Mijn foto's. Is een rood bosje in dit geval als testinformatie. Je kan ook de URL-conketten eten aan elkaar plakken. Is leuk, maar het is wel een gepriegel waar je ook tegenaan loopt of tenminste ik niet, maar mijn klant wel dat ze bijvoorbeeld, ik weet niet hoe ze het voor elkaar krijgen, maar ineens is een hele kolom leeg of staat er 0 NUL in. En dan denk ik, heb jij idee hoe dit gekomen is en heel misschien? Nee, nee, nee, geen idee. En dan zie je weer hoe die kolommen weer te kopiëren. Gewoon af en toe, maar het is wel weer zonder van zijn budget want ik moet het gaan lopen liggen, legtelen, nakijken. En dit stukje was het al. Het is hier helemaal bovenin, lowercase en wat je ook allemaal wilt samenvoegen. WPL import heeft ook een action, weer zo'n automagisch proces en dan kan je zelf titels aan elkaar of eigenlijk de waardes aan elkaar plakken en dan je post-update alsnog. Dus dan in het begin krijg je een random URL-slug en die kan je zelf ten na tijdens het, op het moment dat een post gecaved wordt kan je nog een URL overschrijven. Dus als je dat maar één keer instellen en dan hoeft de klant nergens meer naar om te kijken. Dus dan heb je misschien een beetje best of both worlds. Deze code werkt niet als je hem letterlijk erin plakt, maar het is puur illustratief dat je weet welke hoek je moet hebben. Ben je erom in te opsplitzen? Als je last hebt van de traagheid kan je ook hier de voorkiezen om een import op te splitzen. Eerst basisinformatie, kijken of ze aangemaakt worden en als je daarna alle categorieën of alle bijlages of foto's wilt importeren doe dat dan ook alsjeblieft instappen. WPL import heeft ook, sinds kort of ik weet niet sinds kort, dpcl op de terminal.  Dus ik krijg af en toe een e-mail van, alsjeblieft die hele grote import voor mij op de command-lijn uitvoeren en dan pak ik een bakker koffie en dan hoorde ik het commanden uit en dan gaat hij rollen, rollen, rollen. En dan is hij zeker 50% sneller. Ik heb er wel eens een import van 25 foto's met 50 varianten die draaien soms wel 40 minuten tot een uur en hiermee draaien die sneller dan 50% echt 10 minuten. Dus het kan wel. En ik heb deze klant ook zelf geleerd om in te loggen op de terminal met SSH en dat commando uit te laten voeren want ik had niet zin om 5 voor 5 op maandagmiddag een e-mail te krijgen of ik het wilde uitvoeren. Dus je kan ook een best krippje op zijn computer even installeren en dan zegt hij nou toets dit commando uit en dan voert hij dat automatisch uit. Je moet wel weten dat je je klant vertrouwt met dat hij geen nepste of lijn waar je op zijn computer heeft om MP3's en virusen te downloaden met je SSH key. Even halen maar. Wat we nu gaan doen is WPC-Li. Heel veel tips hebben we al gehad maar in het geval met WPC-Li WPO import importeert zelf alle afbeeldingen bij WPC-Li voer je dat vaak zelf uit en in dat geval dat doe ik eentje verder in dat geval is dit een hele magische functie. Ik voeg zelf geen curl-command uit om hem binnen te halen maar media-sideload is een functie die zit in core van WordPress en daar geef je een URL aan mee en als je wilt zelfs nog een post-id en dan downloadt hij hem, valideert hij hem en dan volgt hij hem met steam in de media library aan deze post. Ideaal. Maar dit is voor afbeeldingen. Onderwater van deze functie doet hij eigenlijk de functie uitvoeren download URL en dan handles-sideload. Ik weet niet waarom ze die functie namen hebben gebruikt maar dit zijn ze en gebruik ze alsjeblieft want dat scheelt echt lappen met checks en validaties en er zit gewoon gratis in core. Echt ideaal. Deze gebruik ik vooral als ik alle afbeeldingen van 1 kitje wilt downloaden om ze te cashen.  Ik heb een basiscommando door de jaren heen met trucjes en dat hij dan zelf al een lichtere WordPress-versie inlaat want als je bijvoorbeeld de define-vapor-import op true-set dan laat hij een lichtere versie van WordPress dus hij laat niet user-interface, gerelateerde javascript-dingen alleen maar het brood nodig hebben. 