bbp_spam_topic( int $topic_id )
Marks a topic as spam
Description
Parameters
- $topic_id
-
(Required) Topic id
Return
(mixed) False or WP_Error on failure, topic id on success
Source
File: bp-forums/topics/functions.php
function bbp_spam_topic( $topic_id = 0 ) {
// Get the topic
$topic = bbp_get_topic( $topic_id );
if ( empty( $topic ) )
return $topic;
// Bail if topic is spam
if ( bbp_get_spam_status_id() === $topic->post_status )
return false;
// Execute pre spam code
do_action( 'bbp_spam_topic', $topic_id );
/** Trash Replies *********************************************************/
// Topic is being spammed, so its replies are trashed
$replies = new WP_Query( array(
'suppress_filters' => true,
'post_type' => bbp_get_reply_post_type(),
'post_status' => bbp_get_public_status_id(),
'post_parent' => $topic_id,
'posts_per_page' => -1,
'nopaging' => true,
'fields' => 'id=>parent'
) );
if ( !empty( $replies->posts ) ) {
// Prevent debug notices
$pre_spammed_replies = array();
// Loop through replies, trash them, and add them to array
foreach ( $replies->posts as $reply ) {
wp_trash_post( $reply->ID );
$pre_spammed_replies[] = $reply->ID;
}
// Set a post_meta entry of the replies that were trashed by this action.
// This is so we can possibly untrash them, without untrashing replies
// that were purposefully trashed before.
update_post_meta( $topic_id, '_bbp_pre_spammed_replies', $pre_spammed_replies );
// Reset the $post global
wp_reset_postdata();
}
// Cleanup
unset( $replies );
/** Topic Tags ************************************************************/
// Add the original post status as post meta for future restoration
add_post_meta( $topic_id, '_bbp_spam_meta_status', $topic->post_status );
// Get topic tags
$terms = get_the_terms( $topic_id, bbp_get_topic_tag_tax_id() );
// Define local variable(s)
$term_names = array();
// Topic has tags
if ( !empty( $terms ) ) {
// Loop through and collect term names
foreach ( $terms as $term ) {
$term_names[] = $term->name;
}
// Topic terms have slugs
if ( !empty( $term_names ) ) {
// Add the original post status as post meta for future restoration
add_post_meta( $topic_id, '_bbp_spam_topic_tags', $term_names );
// Empty the topic of its tags
$topic->tax_input = array( bbp_get_topic_tag_tax_id() => '' );
}
}
// Set post status to spam
$topic->post_status = bbp_get_spam_status_id();
// No revisions
remove_action( 'pre_post_update', 'wp_save_post_revision' );
// Update the topic
$topic_id = wp_update_post( $topic );
// Execute post spam code
do_action( 'bbp_spammed_topic', $topic_id );
// Return topic_id
return $topic_id;
}
Changelog
| Version | Description |
|---|---|
| bbPress (r2740) | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.