Здравствуй,
В предупреждениях есть примечание относительно мета-ассоциаций постов, в котором указывается, что они не будут «переноситься» при переносе. Поскольку я разрабатываю сеть сайтов со сложными реляционными метаданными (с использованием ACF), у меня возникают два вопроса:
Заранее спасибо!
Привет, @ john-lynch-cp, у нас есть внутреннее обсуждение этой темы, но у нас еще нет окончательного направления.
Сохраненное мета-значение - это идентификатор связанного объекта, который отличается на исходном и удаленном сайтах. Вы можете решить эту проблему, заменив идентификатор объекта (мета-значение) на правильный на удаленном сайте:
dt_connection_map
которую можно использовать для получения идентификатора удаленного сообщения.Вы можете подготовить мета сообщения (изменить идентификатор сообщения, добавить термин, добавить логин пользователя), подключившись к dt_push_post_args
и dt_subscription_post_args
.
Чтобы обновить правильное мета-значение на удаленном сайте, подключитесь к dt_process_distributor_attributes
и dt_process_subscription_attributes
.
По вашим вопросам:
В заметке упоминаются «толкающие» переводы. То же самое и с запросами на вытягивание?
Короткий ответ - нет, толкать и тянуть - разные вещи. Хотя можно добиться того же результата push с помощью pull, вам потребуются некоторые дополнительные шаги для подготовки мета поста. За push
, поскольку вы являетесь исходным сайтом, вы можете подготовить дополнительные метаданные перед отправкой. Но вы не можете сделать то же самое с pull
. Дистрибьютор использует конечную точку сообщений, чтобы получить данные публикации для pull
, см. Это .
Есть ли пример предлагаемого расширения плагина "от случая к случаю"? Я бы очень хотел попробовать, но не знаю, с чего начать!
Например, у вас есть поле таксономии (с использованием ACF) с именем test_meta
, которое ссылается на таксономию project_category
. Обратите внимание, что приведенный ниже пример предназначен только для образовательных целей и не является оптимальным решением.
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 );
}
Кстати, есть надстройки, созданные Novembit, которые похожи на приведенный выше пример, но более сложны: https://github.com/NovemBit/distributor-acf-addon. Обратите внимание, что это дополнение несовместимо с текущей версией Дистрибьютора.
Надеюсь на эту помощь!
@ john-lynch-cp отвечает ли приведенный выше ответ на ваши вопросы таким образом, что мы можем закрыть эту проблему, или у вас есть дополнительные вопросы?
Спасибо за продолжение, рад, что вы закрыли это прямо сейчас. Я думаю, что мы ищем другую CMS, поскольку проблема распространения могла бы иметь больше смысла при другом подходе.
Самый полезный комментарий
Привет, @ john-lynch-cp, у нас есть внутреннее обсуждение этой темы, но у нас еще нет окончательного направления.
Сохраненное мета-значение - это идентификатор связанного объекта, который отличается на исходном и удаленном сайтах. Вы можете решить эту проблему, заменив идентификатор объекта (мета-значение) на правильный на удаленном сайте:
dt_connection_map
которую можно использовать для получения идентификатора удаленного сообщения.Вы можете подготовить мета сообщения (изменить идентификатор сообщения, добавить термин, добавить логин пользователя), подключившись к
dt_push_post_args
иdt_subscription_post_args
.Чтобы обновить правильное мета-значение на удаленном сайте, подключитесь к
dt_process_distributor_attributes
иdt_process_subscription_attributes
.По вашим вопросам:
Короткий ответ - нет, толкать и тянуть - разные вещи. Хотя можно добиться того же результата push с помощью pull, вам потребуются некоторые дополнительные шаги для подготовки мета поста. За
push
, поскольку вы являетесь исходным сайтом, вы можете подготовить дополнительные метаданные перед отправкой. Но вы не можете сделать то же самое сpull
. Дистрибьютор использует конечную точку сообщений, чтобы получить данные публикации дляpull
, см. Это .Например, у вас есть поле таксономии (с использованием ACF) с именем
test_meta
, которое ссылается на таксономиюproject_category
. Обратите внимание, что приведенный ниже пример предназначен только для образовательных целей и не является оптимальным решением.Кстати, есть надстройки, созданные Novembit, которые похожи на приведенный выше пример, но более сложны: https://github.com/NovemBit/distributor-acf-addon. Обратите внимание, что это дополнение несовместимо с текущей версией Дистрибьютора.
Надеюсь на эту помощь!