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.
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?
Lorsque nous publions une réponse anonyme anonyme , nous obtenons les erreurs suivantes:
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();
où bbp_filter_anonymous_post_data()
est défini dans le fichier /bbpress/includes/replies/functions.php
.
Voici un plugin de démonstration qui devrait
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.