Oi,
Nas advertências, há uma nota a respeito das pós-meta associações, especificando que elas não serão "trazidas" nas transferências. Como estou desenvolvendo uma rede de sites com metadados relacionais complexos (usando ACF), tenho duas perguntas:
Desde já, obrigado!
Olá @ john-lynch-cp, temos algumas discussões internas sobre este tópico, mas ainda não tivemos uma direção final.
O metavalor salvo é o ID do objeto relacionado, que é diferente entre os sites original e remoto. Você pode resolver esse problema substituindo o ID do objeto (o valor meta) pelo correto no site remoto:
dt_connection_map
meta que pode ser usado para recuperar o id do post remoto.Você pode preparar o post meta (alterar o id do post, adicionar termo slug, adicionar login do usuário) conectando dt_push_post_args
e dt_subscription_post_args
.
Para atualizar o meta valor correto no site remoto, conecte dt_process_distributor_attributes
e dt_process_subscription_attributes
.
Para suas perguntas:
A nota faz referência a transferências "push". O mesmo acontece com as solicitações de "pull"?
A resposta curta é não, empurrar e puxar são diferentes. Embora seja possível obter o mesmo resultado de push usando pull, você precisará de algumas etapas adicionais para preparar a pós-meta. Por push
, porque você é o site original, você pode preparar metadados adicionais antes de enviar. Mas você não pode fazer o mesmo com pull
. O distribuidor usa o endpoint de postagens para obter os dados de postagem de pull
, veja isto .
Existe um exemplo disponível da extensão "caso a caso" do plugin que é sugerido? Gostaria de experimentar, mas não sei por onde começar!
Por exemplo, você tem um campo de taxonomia (usando ACF), denominado test_meta
, que se vincula à taxonomia project_category
. Observe que o exemplo abaixo é feito apenas para fins educacionais, não é uma solução ideal.
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 );
}
Aliás, existe um addons feito pela Novembit que é semelhante ao exemplo acima, mas mais complicado: https://github.com/NovemBit/distributor-acf-addon. Observe que este complemento não é compatível com a versão atual do Distribuidor.
Espero que esta ajuda!
@ john-lynch-cp a resposta acima resolve suas dúvidas de forma que possamos resolver este problema ou você tem alguma pergunta complementar?
Obrigado pelo acompanhamento, feliz por encerrar isso agora. Acho que estamos buscando um CMS diferente, pois o desafio da distribuição pode fazer mais sentido com uma abordagem diferente.
Comentários muito úteis
Olá @ john-lynch-cp, temos algumas discussões internas sobre este tópico, mas ainda não tivemos uma direção final.
O metavalor salvo é o ID do objeto relacionado, que é diferente entre os sites original e remoto. Você pode resolver esse problema substituindo o ID do objeto (o valor meta) pelo correto no site remoto:
dt_connection_map
meta que pode ser usado para recuperar o id do post remoto.Você pode preparar o post meta (alterar o id do post, adicionar termo slug, adicionar login do usuário) conectando
dt_push_post_args
edt_subscription_post_args
.Para atualizar o meta valor correto no site remoto, conecte
dt_process_distributor_attributes
edt_process_subscription_attributes
.Para suas perguntas:
A resposta curta é não, empurrar e puxar são diferentes. Embora seja possível obter o mesmo resultado de push usando pull, você precisará de algumas etapas adicionais para preparar a pós-meta. Por
push
, porque você é o site original, você pode preparar metadados adicionais antes de enviar. Mas você não pode fazer o mesmo compull
. O distribuidor usa o endpoint de postagens para obter os dados de postagem depull
, veja isto .Por exemplo, você tem um campo de taxonomia (usando ACF), denominado
test_meta
, que se vincula à taxonomiaproject_category
. Observe que o exemplo abaixo é feito apenas para fins educacionais, não é uma solução ideal.Aliás, existe um addons feito pela Novembit que é semelhante ao exemplo acima, mas mais complicado: https://github.com/NovemBit/distributor-acf-addon. Observe que este complemento não é compatível com a versão atual do Distribuidor.
Espero que esta ajuda!