2013-05-02 41 views
3

我正在開發一個帶有Buddypress的社交網絡,我創建了一個RSS插件來從指定網站提取RSS源。 除非將RSS發佈到活動流,否則一切正常。當我創建活動內容以打印鏈接時,我將鏈接目標設置爲「_new」以在新頁面中打開它。 下面的代碼:Buddypress bp_activity_add(activity_action)隱藏鏈接「目標」

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> 

這究竟是爲什麼?

回答

3

'target'屬性可能被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'); 

這可能不會追溯解決該問題的現有活動項目 - 這可能是因爲他們已經被存儲在數據庫中之前剝離違規屬性。但它應該有助於未來的項目。

+0

謝謝!這工作! – 2013-05-02 14:10:09