Conversation
supportHi Robin, Thank you for this plugin. I appreciate that your plugin has the option to enable users to delete their own posts. Could I ask how I could enable this using a code snippet alone? The page I need help with: [ log in to see the link]
This is the code for that section, but you’ll need to see if it works, sorry, but I do not have time to make a code snippet for the hundreds of things that my plugin does. ///********allow users to trash own topics/replies if (!empty($bsp_style_settings_t['participant_trash_topic']) && is_user_logged_in()) { /*Customize the BBPress roles to allow Participants to trash topics*/ add_filter( 'bbp_get_caps_for_role', 'bsp_add_topic_caps_filter', 10, 2 ); /*then only allow participants to trash their own topics*/ add_filter( 'bbp_map_topic_meta_caps', 'bsp_tweak_trash_topic_caps', 11, 4 ); //then redirect to the forum after trashing topic add_action('bbp_template_redirect', 'bsp_trash_topic_check', 8); } if (!empty($bsp_style_settings_t['participant_trash_reply']) && is_user_logged_in()) { /*Customize the BBPress roles to allow Participants to trash replies*/ add_filter( 'bbp_get_caps_for_role', 'bsp_add_reply_caps_filter', 10, 2 ); /*then only allow participants to trash their own replies*/ add_filter( 'bbp_map_reply_meta_caps', 'bsp_tweak_trash_reply_caps', 11, 4 ); } function bsp_add_topic_caps_filter( $caps, $role ){ // Only filter for roles we are interested in! if( $role == bbp_get_participant_role() ) { //only change delete topics $caps ['delete_topics']= true; } return $caps; } function bsp_add_reply_caps_filter( $caps, $role ){ // Only filter for roles we are interested in! if( $role == bbp_get_participant_role() ) { //only change delete topics $caps ['delete_replies']= true; } return $caps; } function bsp_tweak_trash_topic_caps( $caps, $cap, $user_id, $args ){ // apply only to delete_topic if ( $cap == "delete_topic" ){ // Get the post $_post = get_post( $args[0] ); if ( !empty( $_post ) ) { // Get caps for post type object $post_type = get_post_type_object( $_post->post_type ); // Add 'do_not_allow' cap if user is spam or deleted if ( bbp_is_user_inactive( $user_id ) ) { $caps[] = 'do_not_allow'; // Moderators can always edit forum content } elseif ( user_can( $user_id, 'moderate' ) ) { $caps[] = 'moderate'; // User is author so allow edit if not in admin } elseif ( user_can( $user_id, 'participate' ) && ( (int) $user_id === (int) $_post->post_author ) ) { $caps = array(); // Unknown so do not allow } else { $caps[] = 'do_not_allow'; } } } // return the capabilities return $caps; } function bsp_tweak_trash_reply_caps( $caps, $cap, $user_id, $args ){ // apply only to delete_reply if ( $cap == "delete_reply" ){ // Get the post $_post = get_post( $args[0] ); if ( !empty( $_post ) ) { // Get caps for post type object $post_type = get_post_type_object( $_post->post_type ); // Add 'do_not_allow' cap if user is spam or deleted if ( bbp_is_user_inactive( $user_id ) ) { $caps[] = 'do_not_allow'; // Moderators can always edit forum content } elseif ( user_can( $user_id, 'moderate' ) ) { $caps[] = 'moderate'; // User is author so allow edit if not in admin } elseif ( user_can( $user_id, 'participate' ) && ( (int) $user_id === (int) $_post->post_author ) ) { $caps = array(); // Unknown so do not allow } else { $caps[] = 'do_not_allow'; } } } // return the capabilities return $caps; } //check if topic has been trashed by author and show forum if it has function bsp_trash_topic_check() { $topic_slug = get_option( '_bbp_topic_slug'); //quick check if we need to do this function, so bail if not a topic if (strpos($_SERVER['REQUEST_URI'], $topic_slug) == FALSE) return; $forum_slug = bbp_get_root_slug(); //if check is set (ie we prefix forums with the forum slug) then part 1 will be forum slug and part 2 will be topic slug, if not part 1 will be topic slug $check = bbp_include_root_slug(); $link = explode('/', $_SERVER['REQUEST_URI']); //next we need the topic id (post id) of the topic so we need to check if it is a topic and if so, find the topic id if ($check && $link[1] == $forum_slug && $link[2] == $topic_slug ) { $post = bsp_get_page_by_slug( $link[3], OBJECT, 'topic' ); if (!empty ($post)) $login_check=1; } elseif (empty($check) && $link[1] === $topic_slug) { $post = bsp_get_page_by_slug( $link[2], OBJECT, 'topic' ); if (!empty ($post)) $login_check=1; } //now we need to check if the topic has been trashed by author if (!empty ($login_check) && $post->post_status == 'trash' && $post->post_author == get_current_user_id() ) { $topic_id = $post->ID; //then redirect to the forum we came from $forum = bbp_get_forum_permalink (bbp_get_topic_forum_id ( $topic_id )); wp_redirect ($forum); exit; } else return; }
This is the code for that section, but you’ll need to see if it works, sorry, but I do not have time to make a code snippet for the hundreds of things that my plugin does. ///********allow users to trash own topics/replies if (!empty($bsp_style_settings_t['participant_trash_topic']) && is_user_logged_in()) { /*Customize the BBPress roles to allow Participants to trash topics*/ add_filter( 'bbp_get_caps_for_role', 'bsp_add_topic_caps_filter', 10, 2 ); /*then only allow participants to trash their own topics*/ add_filter( 'bbp_map_topic_meta_caps', 'bsp_tweak_trash_topic_caps', 11, 4 ); //then redirect to the forum after trashing topic add_action('bbp_template_redirect', 'bsp_trash_topic_check', 8); } if (!empty($bsp_style_settings_t['participant_trash_reply']) && is_user_logged_in()) { /*Customize the BBPress roles to allow Participants to trash replies*/ add_filter( 'bbp_get_caps_for_role', 'bsp_add_reply_caps_filter', 10, 2 ); /*then only allow participants to trash their own replies*/ add_filter( 'bbp_map_reply_meta_caps', 'bsp_tweak_trash_reply_caps', 11, 4 ); } function bsp_add_topic_caps_filter( $caps, $role ){ // Only filter for roles we are interested in! if( $role == bbp_get_participant_role() ) { //only change delete topics $caps ['delete_topics']= true; } return $caps; } function bsp_add_reply_caps_filter( $caps, $role ){ // Only filter for roles we are interested in! if( $role == bbp_get_participant_role() ) { //only change delete topics $caps ['delete_replies']= true; } return $caps; } function bsp_tweak_trash_topic_caps( $caps, $cap, $user_id, $args ){ // apply only to delete_topic if ( $cap == "delete_topic" ){ // Get the post $_post = get_post( $args[0] ); if ( !empty( $_post ) ) { // Get caps for post type object $post_type = get_post_type_object( $_post->post_type ); // Add 'do_not_allow' cap if user is spam or deleted if ( bbp_is_user_inactive( $user_id ) ) { $caps[] = 'do_not_allow'; // Moderators can always edit forum content } elseif ( user_can( $user_id, 'moderate' ) ) { $caps[] = 'moderate'; // User is author so allow edit if not in admin } elseif ( user_can( $user_id, 'participate' ) && ( (int) $user_id === (int) $_post->post_author ) ) { $caps = array(); // Unknown so do not allow } else { $caps[] = 'do_not_allow'; } } } // return the capabilities return $caps; } function bsp_tweak_trash_reply_caps( $caps, $cap, $user_id, $args ){ // apply only to delete_reply if ( $cap == "delete_reply" ){ // Get the post $_post = get_post( $args[0] ); if ( !empty( $_post ) ) { // Get caps for post type object $post_type = get_post_type_object( $_post->post_type ); // Add 'do_not_allow' cap if user is spam or deleted if ( bbp_is_user_inactive( $user_id ) ) { $caps[] = 'do_not_allow'; // Moderators can always edit forum content } elseif ( user_can( $user_id, 'moderate' ) ) { $caps[] = 'moderate'; // User is author so allow edit if not in admin } elseif ( user_can( $user_id, 'participate' ) && ( (int) $user_id === (int) $_post->post_aut...