В BuddyPress 2.3 будет улучшена загрузка аватаров в результате нового BP Attachments API

Участники BuddyPress улучшают новые и существующие API для предстоящего релиза 2.3. За последние несколько месяцев ведущий разработчик Мэтью Виет потратил массу сил, чтобы подготовить новый Attachments API к версии 2.3. Естественно, это не обошлось без помощи участников и обратной связи от рабочей группы.

Attachments API – это новая библиотека, которая позволяет разработчикам создавать компоненты с возможностью управления загрузками. Самый первый пример действия этого API – значительно улучшенный интерфейс для загрузки, обрезки и выбора фотографий профиля для пользователей и групп. Этот новый расширенный интерфейс аватаров не так давно появился в BP транке.

user-camera-capture

Как вы можете видеть ниже, новый интерфейс допускает традиционную загрузку изображений. Также он добавляет возможность доступа к камерам разных устройств для создания фотографий профиля, если браузер пользователей поддерживает getUserMedia.

Администраторы могут также легко отредактировать фотографию профиля участника через страницу профиля в консоли.

Те, кто предпочитает старый интерфейс, могут воспользоваться фильтром для отключения нового интерфейса. Он позволит вам сохранить ядро Buddypress обновленным, даже если вы не хотите добавлять новый интерфейс аватаров к вашему сообществу. Прочтите следующий пост @imath в блоге разработки BuddyPress, чтобы получить детальную информацию об использовании фильтра, а также о применимых шаблонах и совместимости с темами.

Одна из самых увлекательных особенностей нового интерфейса аватаров состоит в том, что разработчики плагинов могут легко расширить этот интерфейс в своих собственных целях.

«Относительно расширяемости: мы хотим, чтобы плагины могли добавлять свои собственные версии загрузчика, в идеале с минимальным объемом работ», говорит ведущий разработчик BP Бун Джорджс в обсуждениях тикета. «@imath уже продемонстрировал, что это не так сложно, и я предполагаю, что в будущем мы найдем способы, позволяющие еще сильнее это упростить».

Джорджс подчеркнул, что в данный момент основное внимание уделено созданию мощной замены системы загрузки аватаров в 2.3, после чего API будет постоянно улучшаться.

Изучите дорожную карту, чтобы отследить тикеты, которые находятся в прогрессе для релиза 2.3. Сам релиз должен выйти к концу мая.

Источник: wptavern.com

Блог про WordPress
Комментарии: 15
  1. Владислав

    ещё бы узнать как после изменения аватара профиля он вместе с текстом «пользователь изменил картинку профиля» падал на стену активности соответственно ля дальнейшего его комментирования другими пользователями!

    1. Дмитрий (автор)

      Скорее всего, только через подцепление дополнительного плагина, написанного уже вручную и использующего Attachments API.

      Либо проверять работоспособность кода:

      https://bp-tricks.com/snippets/adding-a-new-activity-stream-entry-when-a-user-changes-his-avatar/

      Правда, этот код был написан еще для BP 1.3, может не работать.

  2. Владислав

    Код не работает…

    Вот оригинальный код из файла buddypress/bp-xprofile/bp-xprofile-activity.php

    /**
    * Adds an activity stream item when a user has uploaded a new avatar.
    *
    * @since BuddyPress (1.0.0)
    *
    * @package BuddyPress XProfile
    * @uses bp_activity_add() Adds an entry to the activity component tables for a
    * specific activity
    */
    function bp_xprofile_new_avatar_activity() {

    // Bail if activity component is not active
    if ( ! bp_is_active( ‘activity’ ) ) {
    return false;
    }

    /**
    * Filters the user ID when a user has uploaded a new avatar.
    *
    * @since BuddyPress (1.5.0)
    *
    * @param int $value ID of the displayed user.
    */
    $user_id = apply_filters( ‘bp_xprofile_new_avatar_user_id’, bp_displayed_user_id() );

    // Add the activity
    bp_activity_add( array(
    ‘user_id’ => $user_id,
    ‘component’ => ‘profile’,
    ‘type’ => ‘new_avatar’
    ) );
    }
    add_action( ‘xprofile_avatar_uploaded’, ‘bp_xprofile_new_avatar_activity’ );

    А вот код из ссылки, написанной тобой выше:
    /* Add a new activity stream item for when people change their Profile Picute */
    function bp_xprofile_new_avatar_activity() {
    global $bp;

    if ( !function_exists( ‘bp_activity_add’ ) ){
    return false;
    }

    $user_id = apply_filters( ‘xprofile_new_avatar_user_id’, $bp->displayed_user->id );

    $userlink = bp_core_get_userlink( $user_id );

    bp_activity_add( array(
    ‘user_id’ => $user_id,
    ‘action’ => apply_filters( ‘xprofile_new_avatar_action’, sprintf( __( ‘%s uploaded a new profile picture’, ‘buddypress’ ), $userlink ), $user_id ),
    ‘component’ => ‘profile’,
    ‘type’ => ‘new_avatar’
    ) );
    }
    add_action( ‘xprofile_avatar_uploaded’, ‘xprofile_new_avatar_activity’ );

    Что здесь не так?

  3. Дмитрий (автор)

    Может быть, ошибка в последней строке: xprofile_new_avatar_activity

    а надо по идее

    bp_xprofile_new_avatar_activity

  4. Владислав

    сорри, префикс bp_ — это уже я забыл убрать после экспериментов… написал в англоязычную тему по ссылке, которую ты скинул, может ответят что…

  5. Дмитрий (автор)

    И вот тут еще тоже: xprofile_new_avatar_action

    А надо bp_xprofile_new_avatar_action

  6. Владислав

    в общем, пока не работает, нужно разбираться с этим, удивляюсь что по этой теме отсутствует актуальная информация, неужели ни у кого не возникал этот очевидный вопрос…

  7. Дмитрий (автор)

    Нашел еще такой код для вывода обращения в ленте активности в зависимости от пола пользователя. Правда, код тоже был оставлен год назад и может не работать.

    function custom_activity_text_change_avatar( $entry, $user_id ) {
        $gender = bp_get_profile_field_data( 'field=Gender&user_id=' . $user_id );
        $userlink = bp_core_get_userlink( $user_id );
    
        if ( $gender == 'Male' ) {
            $entry = sprintf( __( '%s changed his profile picture', 'buddypress' ), $userlink );
        } else if ( $gender == 'Female' ) {
            $entry = sprintf( __( '%s changed her profile picture', 'buddypress' ), $userlink );
        } else {
            // the user hasn't told us if they are male or female so do nothing
        }
        return $entry;
    }
    add_filter( 'bp_xprofile_new_avatar_action', 'custom_activity_text_change_avatar', 10, 2 );
  8. Владислав

    Тема интересная, насколько я понимаю предварительно должны быть созданы и заполнены гендерные поля в соответствии с упомянутыми в коде.
    Но… в ленте активности изменений пока не заметил.

    Или к этому коду еще какие-нибудь действия нужно сделать!

    1. Дмитрий (автор)

      Да, и в зависимости от них уже выводиться в ленте сообщение в женском или мужском роде. Для этого создаются дополнительные поля с полом в профиле.
      Больше делать ничего не нужно, он должен выводить такие сообщения при смене аватара.

  9. Владислав

    «такие сообщения» — это какие сообщения?) у меня например после добавления этого кода лента активности ничуть не изменилась! ни в варианте гендерных полей в английском формате (male, female), ни в русском (мужчина, женщина)…

    1. Дмитрий (автор)

      Да, но там нужно еще вводить поля в профиль. Только тогда уже должно что-то выводиться.

  10. Владислав

    а, кстати, при добавлении первоначального кода, который был упомянут по ссылке выше — сайт вообще отказывался загружаться…

    1. Дмитрий (автор)

      ну это вполне возможно, коду года три.

  11. Владислав

    Поля профиля естественно заполнены) Будем думать, искать и экспериментировать, если найду — поделюсь

Добавить комментарий для Владислав Отменить ответ

Получать новые комментарии по электронной почте.