未过滤的包含UPDATE_POST_META的html

时间:2013-08-16 作者:CBeTJlu4ok

我有buddypress安装。在发布活动时,我将一些数据(html)作为元数据。让我展示一些代码:

这是在发布活动时触发的操作。

function add_activitylink_to_activity( $content, $user_id, $activity_id ) { ?>
<script type="text/javascript" >
    var activity_id = \'<?php echo $activity_id; ?>\';
    if ( !jQuery(\'#add_activity_link_area\').hasClass(\'empty\') ) {
        var add_link = jQuery("#add_activity_link_area").html();
        jQuery.ajax({
            type : \'POST\',
            url : ajaxurl,
            data : {
                action : \'addActivityMeta\',
                activity_id: activity_id,
                add_link: add_link
            },
            dataType: "html",
            success : function(data) {
                jQuery("#activity-" + activity_id).find(".activity-inner").after(jQuery("<div class=\'meta-activitylink\'></div>").html(add_link));
            },
            error: function(MLHttpRequest, textStatus, errorThrown){
                alert(textStatus);
            }
        })
    }
</script>
<?php }
add_action( \'bp_activity_posted_update\', \'add_activitylink_to_activity\', 10, 3 );
下面是一个ajax处理程序:

function addActivityMeta() {
    bp_activity_update_meta( $_POST[\'activity_id\'], \'activitylink\', $_POST[\'add_link\'] );
    die(\'success\');
}
只要我以管理员身份登录,一切正常,但对于普通用户,meta不会发布

据我所知,这是因为“未过滤的html”,但我不太懂,这听起来可能很愚蠢:我能以某种方式过滤它吗D

有表格和图像链接等。

或者是否有任何解决方法?例如,我想在mysql查询中插入这个meta?这是一个糟糕的解决方案吗?

1 个回复
最合适的回答,由SO网友:shanebp 整理而成

您真的希望您的成员能够在数据库中插入未过滤的html吗?默认情况下,不允许将其作为保护安装的安全措施。

您可以通过调整kses过滤器来允许它。或者通过自定义sql查询绕过过滤器。

结束

相关推荐

如何在多站点博客中显示BuddyPress个人资料字段数据

我试图在WordPress multsite博客上显示BuddyPress xprofile字段。我认为这可能会起作用,但displayed\\u用户似乎在BP之外工作?有没有简单的方法可以做到这一点?我知道有一个old plugin 这可以在一个小部件中实现,但我并不真正需要所有这些,而是直接将其放在主题中。以下是我在多站点博客的主题中尝试的内容。这适用于loggedin\\u user->id,但我拍摄的当然是博客管理员的配置文件数据。可以取回吗?<?php global $bp