Distributor: Расширение для поддержки почтовых мета-ассоциаций ...

Созданный на 8 июл. 2020  ·  3Комментарии  ·  Источник: 10up/distributor

Здравствуй,

В предупреждениях есть примечание относительно мета-ассоциаций постов, в котором указывается, что они не будут «переноситься» при переносе. Поскольку я разрабатываю сеть сайтов со сложными реляционными метаданными (с использованием ACF), у меня возникают два вопроса:

  • В заметке упоминаются «толкающие» переводы. То же самое и с запросами на вытягивание?
  • Есть ли пример предлагаемого расширения плагина "от случая к случаю"? Я бы очень хотел попробовать, но не знаю, с чего начать!

Заранее спасибо!

Reporter Feedback question

Самый полезный комментарий

Привет, @ john-lynch-cp, у нас есть внутреннее обсуждение этой темы, но у нас еще нет окончательного направления.

Сохраненное мета-значение - это идентификатор связанного объекта, который отличается на исходном и удаленном сайтах. Вы можете решить эту проблему, заменив идентификатор объекта (мета-значение) на правильный на удаленном сайте:

  • Для сообщения: у нас есть мета dt_connection_map которую можно использовать для получения идентификатора удаленного сообщения.
  • Для пользователя и термина вы можете использовать slug, чтобы найти правильный термин на удаленном сайте.

Вы можете подготовить мета сообщения (изменить идентификатор сообщения, добавить термин, добавить логин пользователя), подключившись к 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. Обратите внимание, что это дополнение несовместимо с текущей версией Дистрибьютора.

Надеюсь на эту помощь!

Все 3 Комментарий

Привет, @ john-lynch-cp, у нас есть внутреннее обсуждение этой темы, но у нас еще нет окончательного направления.

Сохраненное мета-значение - это идентификатор связанного объекта, который отличается на исходном и удаленном сайтах. Вы можете решить эту проблему, заменив идентификатор объекта (мета-значение) на правильный на удаленном сайте:

  • Для сообщения: у нас есть мета dt_connection_map которую можно использовать для получения идентификатора удаленного сообщения.
  • Для пользователя и термина вы можете использовать slug, чтобы найти правильный термин на удаленном сайте.

Вы можете подготовить мета сообщения (изменить идентификатор сообщения, добавить термин, добавить логин пользователя), подключившись к 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, поскольку проблема распространения могла бы иметь больше смысла при другом подходе.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги