Hola,
En las advertencias, hay una nota con respecto a las meta asociaciones de publicaciones, que especifica que estas no se "traerán" en las transferencias. Mientras estoy desarrollando una red de sitios con metadatos relacionales complejos (usando ACF), tengo dos preguntas:
¡Gracias por adelantado!
Hola @ john-lynch-cp, tenemos una discusión interna sobre este tema, pero aún no hemos tenido una dirección final.
El valor meta guardado es el ID del objeto relacionado, que es diferente entre los sitios originales y remotos. Puede resolver este problema reemplazando el ID del objeto (el valor meta) por el correcto en el sitio remoto:
dt_connection_map
meta que se puede usar para recuperar la identificación de la publicación remota.Puede preparar el meta de la publicación (cambiar la identificación de la publicación, agregar el término slug, agregar el inicio de sesión del usuario) conectando a dt_push_post_args
y dt_subscription_post_args
.
Para actualizar el metavalor correcto en el sitio remoto, conéctese a dt_process_distributor_attributes
y dt_process_subscription_attributes
.
Para sus preguntas:
La nota hace referencia a transferencias "push". ¿Ocurre lo mismo con las solicitudes de "extracción"?
La respuesta corta es no, empujar y tirar son diferentes. Si bien es posible lograr el mismo resultado de push usando pull, necesitará algunos pasos adicionales para preparar la meta de la publicación. Por push
, debido a que eres el sitio original, puedes preparar metadatos adicionales antes de presionar. Pero no puedes hacer lo mismo con pull
. El distribuidor usa el punto final de las publicaciones para obtener los datos de las publicaciones por pull
, vea esto .
¿Hay un ejemplo disponible de la extensión "caso por caso" del complemento que se sugiere? Me encantaría intentarlo, ¡pero no sé por dónde empezar!
Por ejemplo, tiene un campo de taxonomía (usando ACF), llamado test_meta
, que enlaza con la taxonomía project_category
. Tenga en cuenta que el siguiente ejemplo está hecho solo con fines educativos, no es una solución óptima.
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 );
}
Por cierto, hay un complemento creado por Novembit que es similar al ejemplo anterior pero más complicado: https://github.com/NovemBit/distributor-acf-addon. Tenga en cuenta que este complemento no es compatible con la versión actual de Distributor.
¡Espero que esto ayude!
@ john-lynch-cp, ¿la respuesta anterior resuelve sus preguntas de manera que podamos cerrar este problema o tiene alguna pregunta de seguimiento?
Gracias por el seguimiento, feliz de que cierre esto ahora mismo. Creo que estamos mirando hacia un CMS diferente, ya que el desafío de la distribución podría tener más sentido con un enfoque diferente.
Comentario más útil
Hola @ john-lynch-cp, tenemos una discusión interna sobre este tema, pero aún no hemos tenido una dirección final.
El valor meta guardado es el ID del objeto relacionado, que es diferente entre los sitios originales y remotos. Puede resolver este problema reemplazando el ID del objeto (el valor meta) por el correcto en el sitio remoto:
dt_connection_map
meta que se puede usar para recuperar la identificación de la publicación remota.Puede preparar el meta de la publicación (cambiar la identificación de la publicación, agregar el término slug, agregar el inicio de sesión del usuario) conectando a
dt_push_post_args
ydt_subscription_post_args
.Para actualizar el metavalor correcto en el sitio remoto, conéctese a
dt_process_distributor_attributes
ydt_process_subscription_attributes
.Para sus preguntas:
La respuesta corta es no, empujar y tirar son diferentes. Si bien es posible lograr el mismo resultado de push usando pull, necesitará algunos pasos adicionales para preparar la meta de la publicación. Por
push
, debido a que eres el sitio original, puedes preparar metadatos adicionales antes de presionar. Pero no puedes hacer lo mismo conpull
. El distribuidor usa el punto final de las publicaciones para obtener los datos de las publicaciones porpull
, vea esto .Por ejemplo, tiene un campo de taxonomía (usando ACF), llamado
test_meta
, que enlaza con la taxonomíaproject_category
. Tenga en cuenta que el siguiente ejemplo está hecho solo con fines educativos, no es una solución óptima.Por cierto, hay un complemento creado por Novembit que es similar al ejemplo anterior pero más complicado: https://github.com/NovemBit/distributor-acf-addon. Tenga en cuenta que este complemento no es compatible con la versión actual de Distributor.
¡Espero que esto ayude!