31. Meilleures pratiques de mise en cache | Field Forge - Champs personnalisés, conçus pour la vitesse
Télécharger Se connecter

31. Meilleures pratiques de mise en cache

Stratégies pour maximiser l’efficacité du cache avec Field Forge.

Quand utiliser la synchronisation PostMeta

Si des plugins tiers nécessitent des valeurs de champ dans wp_postmeta :

php
add_action( 'fieldforge/value_updated', function( $post_id, $field_name ) {
    $sync_fields = [ 'price', 'sale_price', 'sku', 'stock_quantity' ];
    if ( in_array( $field_name, $sync_fields, true ) ) {
        $value = FIELDFORGE_Field_Values::instance()->get_value( $field_name, $post_id );
        update_post_meta( $post_id, '_' . $field_name, $value );
    }
}, 10, 2 );

Invalidation du cache

Les caches sont automatiquement invalidés lorsque :

  • Une valeur de champ est mise à jour (action fieldforge/value_updated)
  • Toutes les valeurs d’une publication sont supprimées (action fieldforge/values_deleted)
  • Un groupe de champs est sauvegardé ou supprimé

Éviter les requêtes N+1

php
// Bad: N+1 queries
$ids = [1, 2, 3, 4, 5];
foreach ( $ids as $id ) {
    $price = get_field( 'price', $id ); // 1 query each = 5 queries
}

// Good: Preload then access
fieldforge_preload( $ids );
foreach ( $ids as $id ) {
    $price = get_field( 'price', $id ); // 0 queries (all from cache)
}

Mise en cache transitoire pour des opérations coûteuses

php
function get_featured_products_data() {
    $cache_key = 'featured_products_data';
    $data = get_transient( $cache_key );

    if ( false === $data ) {
        $query = new WP_Query( [
            'post_type'      => 'product',
            'posts_per_page' => 6,
            'meta_key'       => '_is_featured',
            'meta_value'     => '1',
        ] );

        fieldforge_preload( wp_list_pluck( $query->posts, 'ID' ) );

        $data = [];
        while ( $query->have_posts() ) : $query->the_post();
            $data[] = [
                'title' => get_the_title(),
                'price' => get_field( 'price' ),
                'image' => get_field( 'thumbnail' ),
                'url'   => get_permalink(),
            ];
        endwhile;
        wp_reset_postdata();

        set_transient( $cache_key, $data, HOUR_IN_SECONDS );
    }

    return $data;
}

// Invalidate when product fields change
add_action( 'fieldforge/value_updated', function( $post_id ) {
    if ( get_post_type( $post_id ) === 'product' ) {
        delete_transient( 'featured_products_data' );
    }
}, 10, 1 );

Assistant IA Forge En ligne

Bonjour ! Je suis l'assistant IA Field Forge. Posez-moi n'importe quelle question sur le plugin — configuration, fonctionnalités, dépannage ou développement.

À l'instant
Propulsé par Forge IA · Parcourir la documentation