Field Forge est conçu pour la performance dès le départ. Son architecture de table personnalisée et son chargement par lots offrent des avantages significatifs par rapport aux solutions basées sur wp_postmeta.
Table personnalisée vs PostMeta
| Fonctionnalité | wp_postmeta (ACF) | wp_fieldforge_values (Field Forge) |
|---|---|---|
| Structure de requête | Paires clé-valeur, une ligne par champ | Lignes typées avec index dédiés |
| Champs composés | Aplatis : repeater_0_title, … | Hiérarchiques : parent_id / row_index |
| Lignes par répétiteur (10×5) | 50+ lignes dans postmeta | 11 lignes dans la table des valeurs |
| Chargement par lots | N requêtes pour N champs | 1 requête pour tous les champs par publication |
| Intégration du cache | Dépend du cache méta de WordPress | Cache d’objet intégré avec le groupe fieldforge |
fieldforge_preload() pour des requêtes personnalisées
php
$query = new WP_Query( [
'post_type' => 'product',
'posts_per_page' => 20,
] );
// Preload all field values in ONE query
$post_ids = wp_list_pluck( $query->posts, 'ID' );
fieldforge_preload( $post_ids );
// Now get_field() calls use cached data -- zero additional queries
while ( $query->have_posts() ) : $query->the_post();
$price = get_field( 'price' ); // From cache
$image = get_field( 'thumbnail' ); // From cache
endwhile;
wp_reset_postdata();Préchargement automatique via the_posts
Field Forge précharge automatiquement les valeurs pour les publications dans la requête principale. Aucun code supplémentaire n’est nécessaire pour les pages d’archive standard, l’index de blog ou les résultats de recherche.
Intégration du cache d’objet
php
$stats = FIELDFORGE_Performance::instance()->get_stats();
/*
Returns:
[
'total_values' => 1523,
'total_posts' => 87,
'total_groups' => 5,
'preloaded_posts' => 10,
'object_cache' => 'active',
'cache_group' => 'fieldforge',
]
*/
// Manual cache flush
FIELDFORGE_Performance::instance()->flush_all();—