it-swarm-eu.dev

Jak mohu nastavit skutečné anonymní vysílání ve fórech bbpress?

Mám nainstalovaný plugin pro bbpress-post-themes, takže mé komentáře jsou nahrazeny tématem fóra bbpress, je to funkční, ale rád bych umožnil anonymní odesílání.

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

V současné době, jak můžete vidět nahoře, je nutné jméno autora, e-mail, webová stránka a téma tématu. Chtěl bych to upravit tak, aby byl vyžadován pouze název tématu a pokud nejsou přihlášeni, jejich příspěvky jsou přiřazeny uživateli nazvanému „anonymní“.

V případě potřeby můžu upravit PHP - opravdu jsem si myslel, že nastavení ve fórech pro „Povolit hostujícím uživatelům bez účtů vytvářet témata a odpovědi“ by dosáhlo toho, o co se snažím.

Poznámka: Tento problém existuje i v tradičních fórech, např.

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

Můžete vidět jméno autora/e-mail jsou povinná pole.

Jak je odstraním jako povinná pole, aby uživatelé mohli skutečně posílat anonymně bez vytvoření účtu?

4
Dave Hilditch

Když zveřejníme prázdnou anonymní odpověď, dostaneme následující chyby:

errrors

Část BBPress , která je zodpovědná za toto zpracování, je funkce bbp_new_reply_handler() v souboru /bbpress/includes/replies/functions.php. Obsahuje tyto řádky, které nás zajímají:

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

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

kde bbp_filter_anonymous_post_data() je definováno v souboru /bbpress/includes/replies/functions.php.

Zde je demo plugin, který by měl

  • vám umožní odeslat odpověď s prázdnými jmény a e-maily.
  • stále udržovat povodňové kontroly na IP číslo.
  • nepíšou soubory cookie, které předem vyplní jméno a textové pole e-mailu.
  • uveďte Anonymous jako jméno replikátoru.

kde:

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

Doufám, že vás to může nasměrovat správným směrem.

5
birgire