我有这个功能
function bp_insert_activity_meta( $content ) {
global $activities_template;
// Strip any legacy time since placeholders from BP 1.0-1.1
$content = str_replace( '<span class="time-since">%s</span>', '', $content );
// Insert the time since.
$time_since = apply_filters_ref_array( 'bp_activity_time_since', array( '<span class="time-since">' . bp_core_time_since( $activities_template->activity->date_recorded ) . '</span>', &$activities_template->activity ) );
// Insert the permalink
if ( !bp_is_single_activity() )
$content = apply_filters_ref_array( 'bp_activity_permalink', array( sprintf( '%1$s <a href="%2$s" class="view activity-time-since" title="%3$s">%4$s</a>', $content, bp_activity_get_permalink( $activities_template->activity->id, $activities_template->activity ), esc_attr__( 'View Discussion', 'buddypress' ), $time_since ), &$activities_template->activity ) );
else
$content .= str_pad( $time_since, strlen( $time_since ) + 2, ' ', STR_PAD_BOTH );
return apply_filters( 'bp_insert_activity_meta', $content );
}
我想将add_Filter添加到此部分:
$content = apply_filters_ref_array( 'bp_activity_permalink', array( sprintf( '%1$s <a href="%2$s" class="view activity-time-since" title="%3$s">%4$s</a>', $content, bp_activity_get_permalink( $activities_template->activity->id, $activities_template->activity ), esc_attr__( 'View Discussion', 'buddypress' ), $time_since ), &$activities_template->activity ) );
这就是我尝试add_filter的方法,但输出两次,一次用于原始代码,第二次用我的代码(注意我在链接中添加了“testing-class-for-filter”类来查看如果输出它)
function testing_filter_abc( $content ) {
global $activities_template;
// Insert the time since.
$time_since = apply_filters_ref_array( 'bp_activity_time_since', array( '<span class="time-since">' . bp_core_time_since( $activities_template->activity->date_recorded ) . '</span>', &$activities_template->activity ) );
return sprintf( '%1$s <a href="%2$s" class="view testing-class-for-filter activity-time-since" title="%3$s">%4$s</a>', $content, bp_activity_get_permalink( $activities_template->activity->id, $activities_template->activity ), esc_attr__( 'View Discussion', 'buddypress' ), $time_since );
}
add_filter( 'bp_activity_permalink', 'testing_filter_abc' );
有什么明显的事我不做吗?一直在努力让这个工作! 提前致谢
答案 0 :(得分:0)
在你的函数testing_filter_abc($ content)
中$ content是一个包含2个元素的数组;一个字符串和一个引用。
在函数bp_insert_activity_meta
中没有像变量那样的变量$ content您在testing_filter_abc()中的返回包括传递给过滤器的数组。
为传递给过滤器的数组使用不同的名称,这将更加明显。
function testing_filter_abc( $content_array ) {
var_dump( $content_array )