Como configuro postagens anônimas reais em fóruns do bbpress? [fechadas]

4

Eu tenho o plug-in bbpress-post-topics instalado para que meus formulários de comentários sejam substituídos por um tópico do fórum do bbpress, ele está funcionando, mas eu gostaria de ativar a postagem anônima.

Atualmente,comovocêpodeveracima,onomedoautor,e-mail,siteetítulodotópicosãoobrigatórios.Eugostariadeajustarisso,entãoapenaso'títulodotópico'énecessárioeseelesnãoestiveremlogados,seuspostsserãoatribuídosaumusuáriochamado'anônimo'

EupossoeditaroPHPsenecessário-eurealmenteacheiqueaconfiguraçãoemFórunspara'Permitirqueusuáriosconvidadossemcontascriassemtópicoserespostas'teriaalcançadooqueeuestouquerendo.

Observação:esseproblematambémexistenosfórunstradicionais,porexemplo

enlace

Você pode ver o nome do autor / e-mail como campos obrigatórios.

Como posso removê-los como campos obrigatórios para que os usuários possam realmente postar anonimamente sem criar uma conta?

    
por Dave Hilditch 28.01.2014 / 21:18

1 resposta

5

Quando postamos uma resposta anônima vazia , obtemos os seguintes erros:

A parte do BBPress que é responsável por lidar com isso, é a função bbp_new_reply_handler() , no arquivo /bbpress/includes/replies/functions.php . Ele contém estas linhas que são de interesse para nós:

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

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

onde bbp_filter_anonymous_post_data() é definido no arquivo /bbpress/includes/replies/functions.php .

Aqui está um plugin de demonstração que deve

  • permite que você publique uma resposta com nomes e e-mails vazios.
  • ainda mantém as verificações de inundação por número de IP.
  • não grava cookies, que preenchem o nome e a caixa de texto de e-mail.
  • dê a você Anônimo como o nome do replicante.

onde:

/**
 * 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 = 'nobody@example.com';

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

Espero que isso possa apontar você na direção certa.

    
por birgire 04.02.2014 / 19:30