Distributor: Extension pour prendre en charge les associations post méta...

Créé le 8 juil. 2020  ·  3Commentaires  ·  Source: 10up/distributor

Salut,

Dans les mises en garde, il y a une note concernant les post méta-associations, spécifiant que celles-ci ne seront pas "apportées" dans les transferts. Alors que je développe un réseau de sites avec des métadonnées relationnelles complexes (utilisant ACF), j'ai deux questions :

  • La note fait référence aux transferts « push ». En est-il de même pour les requêtes « pull » ?
  • Existe-t-il un exemple disponible de l'extension "au cas par cas" du plugin qui est suggéré ? J'aimerais bien essayer mais je ne sais pas par où commencer !

Merci d'avance!

Reporter Feedback question

Commentaire le plus utile

Salut @john-lynch-cp, nous avons des discussions internes sur ce sujet mais nous n'avons pas encore de direction définitive.

La valeur méta enregistrée est l'ID de l'objet associé, qui est différent entre les sites d'origine et distants. Vous pouvez résoudre ce problème en remplaçant l'ID de l'objet (la valeur méta) par le bon sur le site distant :

  • Pour la publication : nous avons dt_connection_map méta
  • Pour user et term, vous pouvez utiliser slug pour trouver le terme correct sur le site distant.

Vous pouvez préparer la méta de publication (modifier l'identifiant de publication, ajouter un slug de terme, ajouter une connexion utilisateur) en vous connectant à dt_push_post_args et dt_subscription_post_args .

Pour mettre à jour la méta-valeur correcte sur le site distant, connectez-vous à dt_process_distributor_attributes et dt_process_subscription_attributes .

Pour vos questions :

La note fait référence aux transferts « push ». En est-il de même pour les requêtes « pull » ?

La réponse courte est non, pousser et tirer sont différents. Bien qu'il soit possible d'obtenir le même résultat de push en utilisant pull, vous aurez besoin de quelques étapes supplémentaires pour préparer la post méta. Pour push , parce que vous êtes le site d'origine, vous pouvez préparer des métadonnées supplémentaires avant de pousser. Mais vous ne pouvez pas faire la même chose avec pull . Le distributeur utilise le point de pull , voir ceci .

Existe-t-il un exemple disponible de l'extension "au cas par cas" du plugin qui est suggéré ? J'aimerais bien essayer mais je ne sais pas par où commencer !

Par exemple, vous avez un champ de taxonomie (utilisant ACF), nommé test_meta , qui est lié à la taxonomie project_category . Veuillez noter que l'exemple ci-dessous est fait à des fins éducatives uniquement, ce n'est pas une solution optimale.

add_action( 'dt_push_post_args', 'prepare_meta', 10, 2 );

function prepare_meta( $post_body, $post ) {
    $term_id = get_post_meta( $post->ID, 'test_meta', true );
    if( $term_id ) {
        $term = get_term_by( 'id', $term_id, 'project_category');
        $post_body['project_category_slug'] = $term->slug;
    }

    return $post_body;
}

add_action( 'dt_process_distributor_attributes', 'set_meta', 10, 2 );

function set_meta( $post, $request ) {
    $term = get_term_by( 'slug', $request['project_category_slug'], 'project_category' );
    if ( ! $term ) {
        return;
    }
    update_post_meta( $post->ID, 'test_meta', $term->term_id );
}

Au fait, il existe un addons créé par Novembit qui est similaire à l'exemple ci-dessus mais plus compliqué : https://github.com/NovemBit/distributor-acf-addon. Notez que cet addon n'est pas compatible avec la version actuelle de Distributor.

J'espère que cette aide!

Tous les 3 commentaires

Salut @john-lynch-cp, nous avons des discussions internes sur ce sujet mais nous n'avons pas encore de direction définitive.

La valeur méta enregistrée est l'ID de l'objet associé, qui est différent entre les sites d'origine et distants. Vous pouvez résoudre ce problème en remplaçant l'ID de l'objet (la valeur méta) par le bon sur le site distant :

  • Pour la publication : nous avons dt_connection_map méta
  • Pour user et term, vous pouvez utiliser slug pour trouver le terme correct sur le site distant.

Vous pouvez préparer la méta de publication (modifier l'identifiant de publication, ajouter un slug de terme, ajouter une connexion utilisateur) en vous connectant à dt_push_post_args et dt_subscription_post_args .

Pour mettre à jour la méta-valeur correcte sur le site distant, connectez-vous à dt_process_distributor_attributes et dt_process_subscription_attributes .

Pour vos questions :

La note fait référence aux transferts « push ». En est-il de même pour les requêtes « pull » ?

La réponse courte est non, pousser et tirer sont différents. Bien qu'il soit possible d'obtenir le même résultat de push en utilisant pull, vous aurez besoin de quelques étapes supplémentaires pour préparer la post méta. Pour push , parce que vous êtes le site d'origine, vous pouvez préparer des métadonnées supplémentaires avant de pousser. Mais vous ne pouvez pas faire la même chose avec pull . Le distributeur utilise le point de pull , voir ceci .

Existe-t-il un exemple disponible de l'extension "au cas par cas" du plugin qui est suggéré ? J'aimerais bien essayer mais je ne sais pas par où commencer !

Par exemple, vous avez un champ de taxonomie (utilisant ACF), nommé test_meta , qui est lié à la taxonomie project_category . Veuillez noter que l'exemple ci-dessous est fait à des fins éducatives uniquement, ce n'est pas une solution optimale.

add_action( 'dt_push_post_args', 'prepare_meta', 10, 2 );

function prepare_meta( $post_body, $post ) {
    $term_id = get_post_meta( $post->ID, 'test_meta', true );
    if( $term_id ) {
        $term = get_term_by( 'id', $term_id, 'project_category');
        $post_body['project_category_slug'] = $term->slug;
    }

    return $post_body;
}

add_action( 'dt_process_distributor_attributes', 'set_meta', 10, 2 );

function set_meta( $post, $request ) {
    $term = get_term_by( 'slug', $request['project_category_slug'], 'project_category' );
    if ( ! $term ) {
        return;
    }
    update_post_meta( $post->ID, 'test_meta', $term->term_id );
}

Au fait, il existe un addons créé par Novembit qui est similaire à l'exemple ci-dessus mais plus compliqué : https://github.com/NovemBit/distributor-acf-addon. Notez que cet addon n'est pas compatible avec la version actuelle de Distributor.

J'espère que cette aide!

@john-lynch-cp la réponse ci-dessus résout-elle vos questions de manière à ce que nous puissions résoudre ce problème ou avez-vous des questions de suivi ?

Merci pour le suivi, heureux que vous ayez clôturé cela maintenant. Je pense que nous nous tournons vers un CMS différent car le défi de la distribution pourrait avoir plus de sens avec une approche différente.

Cette page vous a été utile?
0 / 5 - 0 notes