gpt4 book ai didi

notifications - 在buddypress中添加自定义通知

转载 作者:行者123 更新时间:2023-12-04 15:22:36 25 4
gpt4 key购买 nike

我想在发生特定事件时向我的 buddypress“通知”选项卡添加自定义通知。如何实现这一目标?

最佳答案

我遵循了本教程并且非常完整。 为我工作

BuddyPress: Adding Custom Notifications



我打算把作者写的。但是如果你直接去那个帖子会更好,在那里你可以找到更好的解释。我觉得这个帖子是给傻瓜写的,很完整,解释的很清楚,竟然还有 gist .

第一注册您的组件

您需要将您的通知注册为 budypress 组件。这很容易。注册的组件名称是 定制
// this is to add a fake component to BuddyPress. A registered component is needed to add notifications
function custom_filter_notifications_get_registered_components( $component_names = array() ) {
// Force $component_names to be an array
if ( ! is_array( $component_names ) ) {
$component_names = array();
}
// Add 'custom' component to registered components array
array_push( $component_names, 'custom' );
// Return component's with 'custom' appended
return $component_names;
}
add_filter( 'bp_notifications_get_registered_components', 'custom_filter_notifications_get_registered_components' );

2nd 渲染通知
// this gets the saved item id, compiles some data and then displays the notification
function custom_format_buddypress_notifications( $action, $item_id, $secondary_item_id, $total_items, $format = 'string' ) {
// New custom notifications
if ( 'custom_action' === $action ) {

$comment = get_comment( $item_id );

$custom_title = $comment->comment_author . ' commented on the post ' . get_the_title( $comment->comment_post_ID );
$custom_link = get_comment_link( $comment );
$custom_text = $comment->comment_author . ' commented on your post ' . get_the_title( $comment->comment_post_ID );
// WordPress Toolbar
if ( 'string' === $format ) {
$return = apply_filters( 'custom_filter', '<a href="' . esc_url( $custom_link ) . '" title="' . esc_attr( $custom_title ) . '">' . esc_html( $custom_text ) . '</a>', $custom_text, $custom_link );
// BuddyBar
} else {
$return = apply_filters( 'custom_filter', array(
'text' => $custom_text,
'link' => $custom_link
), $custom_link, (int) $total_items, $custom_text, $custom_title );
}

return $return;

}

}
add_filter( 'bp_notifications_get_notifications_for_user', 'custom_format_buddypress_notifications', 10, 5 );

第 3 次启动通知

Here you add the notification when someone writes you on a post. Use the action hook wp_insert_comment for catch that event.


// this hooks to comment creation and saves the comment id
function bp_custom_add_notification( $comment_id, $comment_object ) {
$post = get_post( $comment_object->comment_post_ID );
$author_id = $post->post_author;
bp_notifications_add_notification( array(
'user_id' => $author_id,
'item_id' => $comment_id,
'component_name' => 'custom',
'component_action' => 'custom_action',
'date_notified' => bp_core_current_time(),
'is_new' => 1,
) );

}
add_action( 'wp_insert_comment', 'bp_custom_add_notification', 99, 2 );

全部一起
<?php
// this is to add a fake component to BuddyPress. A registered component is needed to add notifications
function custom_filter_notifications_get_registered_components( $component_names = array() ) {

// Force $component_names to be an array
if ( ! is_array( $component_names ) ) {
$component_names = array();
}

// Add 'custom' component to registered components array
array_push( $component_names, 'custom' );

// Return component's with 'custom' appended
return $component_names;
}
add_filter( 'bp_notifications_get_registered_components', 'custom_filter_notifications_get_registered_components' );


// this gets the saved item id, compiles some data and then displays the notification
function custom_format_buddypress_notifications( $action, $item_id, $secondary_item_id, $total_items, $format = 'string' ) {

// New custom notifications
if ( 'custom_action' === $action ) {

$comment = get_comment( $item_id );

$custom_title = $comment->comment_author . ' commented on the post ' . get_the_title( $comment->comment_post_ID );
$custom_link = get_comment_link( $comment );
$custom_text = $comment->comment_author . ' commented on your post ' . get_the_title( $comment->comment_post_ID );

// WordPress Toolbar
if ( 'string' === $format ) {
$return = apply_filters( 'custom_filter', '<a href="' . esc_url( $custom_link ) . '" title="' . esc_attr( $custom_title ) . '">' . esc_html( $custom_text ) . '</a>', $custom_text, $custom_link );

// Deprecated BuddyBar
} else {
$return = apply_filters( 'custom_filter', array(
'text' => $custom_text,
'link' => $custom_link
), $custom_link, (int) $total_items, $custom_text, $custom_title );
}

return $return;

}

}
add_filter( 'bp_notifications_get_notifications_for_user', 'custom_format_buddypress_notifications', 10, 5 );


// this hooks to comment creation and saves the comment id
function bp_custom_add_notification( $comment_id, $comment_object ) {

$post = get_post( $comment_object->comment_post_ID );
$author_id = $post->post_author;

bp_notifications_add_notification( array(
'user_id' => $author_id,
'item_id' => $comment_id,
'component_name' => 'custom',
'component_action' => 'custom_action',
'date_notified' => bp_core_current_time(),
'is_new' => 1,
) );

}
add_action( 'wp_insert_comment', 'bp_custom_add_notification', 99, 2 );

关于notifications - 在buddypress中添加自定义通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23148948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com