In het artikel WordPress Posts Rapportage met MySQL is een eerste aanzet gegeven om met MySQL queries overzichten te produceren vanuit je WordPress database. Het advies is eerst dit artikel als basis door te nemen en daarna met de opgedane kennis dit vervolg te lezen.
We gaan er nog steeds vanuit, dat je enige kennis hebt van MySQL en dat je queries kunt uitvoeren in phpMyAdmin of in een MySQL client. Daar kan je de scripts draaien, die hieronder beschreven worden. Een volgende stap is, dat je het schrijven van een PHP script beheerst, zodat je een rapportage tevoorschijn kunt toveren. Het maken van zo'n script valt buiten de scope van dit artikel. Wanneer je de output in een WordPress post of page wilt laten zien, dan is daarvoor een plugin voor nodig. Daarmee kan je een PHP script inkapselen in een post of page. De naam van deze gratis plugin is Insert PHP Code Snippet.
Het gaat in dit artikel om de afbeeldingen, die je als upload hebt gedaan om je WordPress post of page te illustreren. In de WordPress database is de tabel wp_posts een vergaarbak geworden van allerlei content onderdelen. Kijk maar eens naar het veld post_type. Naast de nu langzamerhand bekende onderdelen post en page komen er ook elementen in voor als revision (eerdere versies van een post of page), menu onderdelen en items gerelateerd aan geïnstalleerde plugins. Voor het beheer van images is het post_type attachment van belang en daaraan gerelateerd de waarde image/jpeg in het veld post_mime_type. Als we het in het vervolg over een post hebben, dan wordt daarmee ook een page bedoeld.
Alle images op een rijtje
Eerst maken we een simpele query aan op de tabel wp_posts zonder koppeling naar andere tabellen.
Dit is de MySQL query:
SELECT
post_title as 'Image Title',
post_name as 'Slug',
post_content as 'Content',
date(post_date) as 'Date',
ID as 'Id',
guid as 'Image Location'
FROM wp_posts
WHERE post_type = 'attachment'
AND post_mime_type = 'image/jpeg'
AND post_status = 'inherit'
ORDER BY post_title
Toelichting bij de stappen:
- Vervang indien nodig de prefix wp_ door de prefix, die je zelf gekozen hebt bij je WordPress installatie
- De WHERE regel laat zien, dat alleen attachments van het type image/jpeg geselecteerd worden, welke de status inherit hebben
- De volgorde wordt bepaald door titel van de post
De bovenstaande query levert via de Insert PHP Code Snippet plugin op een WordPress website het volgende resultaat op:
WordPress Images
| Image Title | Post | Date | Image |
|---|---|---|---|
| Almeerse Hockey Club - Almere - Netherlands | 421 | 2022-11-22 | Image |
| Amersfoortse Mixed Hockey Club - Amersfoort - Netherlands | 433 | 2021-09-09 | Image |
| Amsterdam Rijn Kanaal - Maarssen - Netherlands | 703 | 2025-07-25 | Image |
| Antic Varador - Valencia - Spain | 475 | 2023-06-26 | Image |
| Arval Office - Houten - Netherlands | 763 | 2025-11-20 | Image |
| Balcoes - Ribeiro Frio - Madeira | 488 | 2023-09-29 | Image |
| Baslica de la Mare de Du dels Desemparats - Valencia | 581 | 2023-06-24 | Image |
| Biggeblick - Attendorn - Germany. | 877 | 2022-05-10 | Image |
| Biggeblick - Attendorn - Germany. | 486 | 2022-05-10 | Image |
| Bismarckturm - Langenberg - Velbert - Germany | 403 | 2024-07-18 | Image |
Om deze pagina overzichtelijk te houden is het aantal regels beperkt tot 10. De hyperlinks in de kolom Image verwijzen naar de afbeeldingen.
Het volledige overzicht is te zien op weremere.com.
De Insert PHP Code Snippet is gevuld met de volgende code:
<?php
$phpcontent = file_get_contents('https://www.weremere.com/wp-reports/wprpt-images10.php');
echo $phpcontent; ?>
WordPress images aangevuld met de parent post
Een WordPress post kan meerdere afbeeldingen bevatten. Zoals eerder beschreven wordt voor elke image een eigen record aangemaakt in de tabel wp_posts. In het veld post_parent staat dan een verwijzing naar het indexnummer van de post. Als de titel daarbij gezocht moet worden, dan is het nodig een self-join te maken: Er wordt opgezocht in dezelfde tabel.
Dat betekent, dat wp_posts een keer voorkomt in de FROM regel en een tweede keer in de JOIN regel. Om verwarring te voorkomen worden er aliassen toegekend aan beide wp_posts vermeldingen. In deze query zijn de aliassen post en parent. Deze aliassen komen in de query als prefixen voor de veldomschrijvingen.
De MySQL query ziet er zo uit:
SELECT
post.post_title as 'Image Title',
post.post_name as 'Slug',
post.post_content as 'Content',
date(post.post_date) as 'Date',
post.ID as 'Id',
parent.ID AS 'Parent Id',
parent.post_title as 'Post Title',
post.guid as 'Image Location'
FROM wp_posts post
JOIN wp_posts parent
ON post.post_parent = parent.ID
WHERE post.post_type = 'attachment'
AND post.post_mime_type = 'image/jpeg'
AND post.post_status = 'inherit'
ORDER BY parent.post_title, post.post_title
De volgorde gaat eerst op de naam van de parent post title en daarna op de post title van de afbeelding.
En zo ziet het er beperkt tot 10 records in een PHP bestand uit :
WordPress Images with Parent Post
| Image Title | Post | Date | Image |
|---|---|---|---|
| Central Station - Utrecht - Netherlands | Architecture | 2023-05-22 | Image |
| Ciudad de las Artes y las Ciencias - Valencia - Spain | Architecture | 2023-06-27 | Image |
| Deserted busstation - Leidsche Rijn - Utrecht - Netherlands | Architecture | 2020-02-14 | Image |
| Lisbon - Estao do Oriente | Architecture | 2022-06-29 | Image |
| Radio Kootwijk - Near Apeldoorn - Netherlands | Architecture | 2022-08-05 | Image |
| Van Leerbrug - Vreeland - Netherlands | Bridges | 2020-05-06 | Image |
| Castle Nijenrode - Breukelen - Netherlands | Castles | 2023-12-06 | Image |
| Kasteel Heemstede - Houten - Netherlands | Castles | 2023-11-30 | Image |
| Baslica de la Mare de Du dels Desemparats - Valencia | Ceilings | 2023-06-24 | Image |
| Fitzwilliam Museum - Cambridge - United Kingdom | Ceilings | 2024-09-26 | Image |
In de kolom Post staat een hyperlink naar de parent post. En de kolom Image bevat een verwijzing naar de afbeelding.
Het volledige rapport is te zien in een PHP bestand op weremere.com.
Afsluiting
In dit artikel is uitgelegd, hoe je met MySQL queries overzichten kunt genereren van de afbeeldingen op een WordPress website. Op beknopte wijze is getoond, hoe de tabel wp_posts in elkaar zit en hoe de onderlinge verbanden tussen de posts zijn.
- Hits: 150