it-swarm.com.de

Wie richte ich ein echtes anonymes Posting in BBPress-Foren ein?

Ich habe das Plugin bbpress-post-topics installiert, sodass meine Kommentarformulare durch ein bbpress-Forenthema ersetzt werden. Es funktioniert, aber ich möchte anonymes Posten aktivieren.

how do i remove the fields so users can post anonymously?

Derzeit sind, wie oben zu sehen, der Name des Autors, die E-Mail-Adresse, die Website und der Thementitel erforderlich. Ich möchte dies so anpassen, dass nur der "Thementitel" erforderlich ist. Wenn sie nicht angemeldet sind, werden ihre Beiträge einem Benutzer namens "anonym" zugeordnet.

Ich kann das PHP bei Bedarf bearbeiten. Ich dachte wirklich, die Einstellung in den Foren für "Gastbenutzern ohne Konten erlauben, Themen und Antworten zu erstellen" hätte das erreicht, was ich beabsichtige.

Hinweis: Dieses Problem tritt auch in den herkömmlichen Foren auf, z.

http://www.rugbydata.com/forums/forum/aviva-premiership/

Sie können sehen, dass der Name des Autors/die E-Mail-Adresse Pflichtfelder sind.

Wie entferne ich sie als Pflichtfelder, damit Benutzer wirklich anonym posten können, ohne ein Konto zu erstellen?

4
Dave Hilditch

Wenn wir eine leere anonyme Antwort posten, erhalten wir die folgenden Fehler:

errrors

Der Teil von BBPress , der dafür verantwortlich ist, ist die Funktion bbp_new_reply_handler() in der Datei /bbpress/includes/replies/functions.php. Es enthält diese Zeilen, die für uns von Interesse sind:

    // User is anonymous
    if ( bbp_is_anonymous() ) {

            // Filter anonymous data
            $anonymous_data = bbp_filter_anonymous_post_data();

wobei bbp_filter_anonymous_post_data() in der Datei /bbpress/includes/replies/functions.php definiert ist.

Hier ist ein Demo-Plugin, das sollte

  • mit dieser Option können Sie eine Antwort mit leeren Namen und E-Mails veröffentlichen.
  • behalten Sie die Flutüberprüfungen trotzdem per IP-Nummer.
  • schreiben Sie keine Cookies, die den Namen und das E-Mail-Textfeld vorab ausfüllen.
  • geben Sie Anonym als Namen des Antwortenden an.

woher:

/**
 * Plugin Name: Empty Anonymous Replies in BBPress
 * Plugin URI: http://wordpress.stackexchange.com/a/133420/26350
 */

add_action( 'init', array( 'WPSE_Empty_Anonymous_Replies', 'init' ) );

class WPSE_Empty_Anonymous_Replies
{
        static protected $name  = 'nobody';
        static protected $email = '[email protected]';

        static public function init()
        {
            add_filter( 'bbp_filter_anonymous_post_data', 
                         array( __CLASS__, 'bbp_filter_anonymous_post_data' ),                    
                         11, 2 );
            add_filter( 'bbp_pre_anonymous_post_author_name', 
                         array( __CLASS__,  'bbp_pre_anonymous_post_author_name' ) );
            add_filter( 'bbp_pre_anonymous_post_author_email',  
                         array( __CLASS__, 'bbp_pre_anonymous_post_author_email' ) );
        }

        static public function bbp_filter_anonymous_post_data( $retval, $r )
        {
            if( self::$name === $r['bbp_anonymous_name'] 
                && self::$email === $r['bbp_anonymous_email'] )
            {   
                // reset the input to skip writing cookies 
                $retval = array();

                // trick to activate the IP flood check 
                $retval['bbp_anonymous_flood_check'] = '1';
            }       
            return $retval;
        }

        static public function bbp_pre_anonymous_post_author_name( $name )
        {
            remove_filter( current_filter(), array( __CLASS__, __FUNCTION__ ) );
            if( empty( $name ) )
                $name = self::$name;

            return $name;
        }

        static public function bbp_pre_anonymous_post_author_email( $email )
        {
            remove_filter( current_filter(), array( __CLASS__, __FUNCTION__ ) );
            if( empty( $email ) )
                $email = self::$email;

            return $email;
        }
    }

Ich hoffe, das kann Ihnen den Weg weisen.

5
birgire