web-dev-qa-db-fra.com

Comment puis-je configurer de véritables publications anonymes sur les forums bbpress?

Le plugin bbpress-post-topics est installé de manière à ce que mes formulaires de commentaires soient remplacés par un sujet de forum bbpress. Cela fonctionne, mais j'aimerais activer la publication anonyme.

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

Actuellement, comme vous pouvez le voir ci-dessus, le nom de l'auteur, le courrier électronique, le site Web et le titre du sujet sont obligatoires. Je voudrais ajuster ceci afin que seul le "titre de la rubrique" soit obligatoire. S'ils ne sont pas connectés, leurs publications sont attribuées à un utilisateur appelé "anonyme".

Je peux modifier le PHP si nécessaire. J'ai vraiment pensé que le paramètre "Autoriser les utilisateurs invités sans comptes à créer des sujets et des réponses" aurait permis d'atteindre ce que je souhaitais.

Remarque: ce problème existe également dans les forums traditionnels, par exemple.

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

Vous pouvez voir le nom de l'auteur/email sont des champs obligatoires.

Comment puis-je les supprimer en tant que champs obligatoires afin que les utilisateurs puissent réellement publier de manière anonyme sans créer de compte?

4
Dave Hilditch

Lorsque nous publions une réponse anonyme anonyme , nous obtenons les erreurs suivantes:

errrors

La partie de BBPress qui est chargée de le gérer est la fonction bbp_new_reply_handler(), située dans le fichier /bbpress/includes/replies/functions.php. Il contient ces lignes qui nous intéressent:

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

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

bbp_filter_anonymous_post_data() est défini dans le fichier /bbpress/includes/replies/functions.php.

Voici un plugin de démonstration qui devrait

  • vous permet de poster une réponse avec des noms vides et des emails.
  • conservez toujours les contrôles d'inondation par numéro IP.
  • pas écrire des cookies, qui vont pré-remplir le nom et la zone de texte de l’email.
  • vous donner Anonymous comme nom du replier.

où:

/**
 * 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;
        }
    }

J'espère que cela peut vous orienter dans la bonne direction.

5
birgire