Le tabelle di database non core sono indispensabili se i tuoi dati sono più complessi del modello di post di WordPress, saranno enormi e avranno molti meta dettagli che verranno cercati.
Il formato EAV che WordPress utilizza per il suo meta meta non si presta bene alla ricerca multi-criterio.
Se dividi il tuo meta in molte voci, avrai numerose voci per post nella meta table post e la ricerca di qualsiasi post attraverso metas sarà molto più lenta.
Se memorizzi tutti i metas serializzati in un array e lo hai come una sola voce nel post meta, questa volta sarai costretto a fare solo ricerche di testo all'interno di quel meta e non sarai in grado di usare gli operatori di confronto direttamente nella tua query sql.
Non è un grosso problema se il tuo plugin non avrà migliaia di voci e meta associati.
Ma un grosso problema se il tuo plugin farà qualcosa di grande.
La tua situazione, un nome file come voce indipendente e 3 voci metadati associate a quella voce non sembrano così grandi. È possibile utilizzare la tabella post wordpress e la meta table per questo.
MA, se le persone cercheranno spesso questi 3 metas, SOPRATTUTTO congiuntamente, consiglierei di impostare tabelle separate.
Con quel formato solo una tabella con una sola voce, che contiene anche tutti i metas, sarebbe ok e interrogherebbe alla velocità della luce.
Per inciso, se si utilizzano le tabelle di WordPress e si utilizza anche la memorizzazione nella cache delle query, l'utente cerca i propri dati che verrebbero memorizzati nella cache nel tempo e subirebbero un minor carico. Ma questo non sarebbe così prudente come fare tavoli separati.