Поддержка BuddyPress HTML cuts when posting activity through API

  • Решено ezhmkv

    (@ezhmkv)


      $frmtd_content = "<a class='test' id='goshilovethisbpplugin' href='example.com'><i class='holycrap' data-some-data-attribute='omgnothingheckingworkz'></i></a>";
    $gp_activity = groups_record_activity(
                array(
                    'action'  => apply_filters('groups_activity_new_update_action', sprintf(__('%1$s group message %2$s', 'buddypress'), $msg_author, '<a href="' . bp_get_group_permalink($group) . '">' . esc_attr(bp_get_group_name($group)) . '</a>')),
                    'content' => $frmtd_content,
                    'type'    => 'new_message',
                    'item_id' => $gid,
                    'user_id' => $user_id,
                )
            );

    Через функцию проходят только основные тэги, ни дата-атрибуты, ни классы ни айди не проходят, в чём дело?

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Модератор Slava Abakumov

    (@slaffik)

    Контент проходит черех фильтр bp_activity_content_before_save, на который навешаны функции, что удаляют все ненужное: http://take.ms/AfdOY

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

    Вобщем если тут кто нть будет искать, в bp-functions разрешаем теги и их свойства

    function ezhmkv_whitelist_tags_in_activity( $allowedtags ) {
                global $allowedtags;
                $allowedtags['a']['target'] = array();
                $allowedtags['a']['class'] = array();
                $allowedtags['a']['data-popup'] = array();
                $allowedtags['i']['class'] = array();
                $allowedtags['img']['src'] = array();
                $allowedtags['span']['style'] = array();
                $allowedtags['div']['style'] = array();
                $allowedtags['div']['class'] = array();
                $allowedtags['iframe']['src'] = array();
                return $allowedtags;
    }
    add_filter( 'bp_activity_allowed_tags', 'ezhmkv_whitelist_tags_in_activity', 1 );
    Модератор Slava Abakumov

    (@slaffik)

    А зачем вы назначаете глобальную переменную? Внутрь функции уже зашла $allowedtags, не надо вмешиваться в глобальную область видимости.

    Возможно присутствие not_sleeping_enough Error. Тестируйте и воздастся. У меня работает.

Просмотр 4 ответов — с 1 по 4 (всего 4)