web-dev-qa-db-ja.com

Bbpressフォーラムに実際の匿名投稿を設定するにはどうすればよいですか?

私のコメントフォームがbbpressフォーラムのトピックに置き換えられるようにbbpress-post-topicsプラグインをインストールしました。それは動作しますが、匿名投稿を有効にしたいです。

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

現時点では、上記のとおり、作成者名、電子メール、Webサイト、およびトピックのタイトルが必要です。私はこれを調整して 'トピックのタイトル'だけが必要とされ、彼らがログインしていない場合、彼らの投稿は '匿名'と呼ばれるユーザーに起因すると考えます

必要に応じてPHPを編集できます - フォーラムの[アカウントを持たないゲストユーザーにもトピックや返信を作成することを許可する]の設定で、私が目指していることが達成できたと思います。

注意:この問題は伝統的なフォーラムにもあります。

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

あなたは作者名/ Eメールが必須フィールドであるのを見ることができます。

ユーザーがアカウントを作成しなくても匿名で投稿できるように、必須フィールドとしてそれらを削除するにはどうすればよいですか。

4
Dave Hilditch

空の匿名 返信を投稿すると、次のエラーが発生します。

errrors

BBPress の一部はこれを処理する責任があり、ファイル/bbpress/includes/replies/functions.php内のbbp_new_reply_handler()関数です。それは私達にとって興味があるこれらのラインを含んでいます:

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

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

bbp_filter_anonymous_post_data()は、ファイル/bbpress/includes/replies/functions.phpで定義されています。

これはデモプラグインです。

  • 空の名前とEメールで返信を投稿できるようにします。
  • それでもIP番号ごとにフラッドチェックを続けてください。
  • クッキーを書かないでください、それは名前と電子メールのテキストボックスを事前に埋めます。
  • 匿名 と回答者の名前として指定してください。

ここで、

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

これがあなたを正しい方向に向けることを願っています。

5
birgire