我正在与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>
为什么会这样?
答案 0 :(得分: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' );
这可能不会追溯性地修复现有活动项的问题 - 它们很可能在存储到数据库之前被删除了违规属性。但它应该有助于未来的项目。