3

我正在使用 Buddypress 开发一个社交网络,我创建了一个 RSS 插件来从指定的网站中提取 RSS 提要。一切正常,除非 RSS 被发布到活动流中。当我创建活动内容以打印链接时,我将链接目标设置为“_new”以在新页面中打开它。这是代码:

function wprss_add_to_activity_feed($item, $inserted_ID) {

    $permalink          = $item->get_permalink();
    $title              = $item->get_title();
    $admin              = get_user_by('login', 'admin');

    # Generates the link
    $activity_action    = sprintf( __( '%s published a new RSS link: %s - ', 'buddypress'), bp_core_get_userlink( $admin->ID ), '<a href="' . $permalink .'" target="_blank" title="'.$title.'">' . attribute_escape( wprss_limit_rss_title_chars($title) ) . '</a>');

    /* Record this in activity streams */
    bp_activity_add( array(
        'user_id' => $admin->ID,
        'item_id' => $inserted_ID,
        'action' => $activity_action,
        'component' => 'rss',
        'primary_link' => $permalink,
        'type' => 'activity_update',
        'hide_sitewide' => false
    ));

}

它应该想出类似的东西:

<a href="link" target="_new" title="link">Test</a>

但它会这样打印:

<a href="link" title="link">Test</a>

为什么会这样?

4

1 回答 1

3

BuddyPress 的 kses 过滤器实现可能会剥夺“目标”属性。您可以将属性列入白名单,如下所示:

function se16329156_whitelist_target_in_activity_action( $allowedtags ) {
    $allowedtags['a']['target'] = array();
    return $allowedtags;
}
add_filter( 'bp_activity_allowed_tags', 'se16329156_whitelist_target_in_activity_action' );

这可能不会追溯解决现有活动项目的问题——它们很可能在存储到数据库中之前已经删除了违规属性。但它应该有助于未来的项目。

于 2013-05-02T11:39:43.620 回答