Is it possible to hook in and override the default notification message for WP MS? I know the message being sent out is in /wp-admin/user-new.php
if ( is_multisite() ) {
function admin_created_user_email( $text ) {
/* translators: 1: Site name, 2: site URL, 3: role */
return sprintf( __( 'Hi,
You've been invited to join '%1$s' at
%2$s as a %3$s.
If you do not want to join this site please ignore
this email. This invitation will expire in a few days.
Please click the following link to activate your user account:
%%s' ), get_bloginfo('name'), site_url(), esc_html( $_REQUEST[ 'role' ] ) );
}
add_filter( 'wpmu_signup_user_notification_email', 'admin_created_user_email' );
function admin_created_user_subject( $text ) {
return "[" . get_bloginfo('name') . "] Your site invite";
}
}
I believe I can do it if I can find the right hook in so that I can remove_filter() and then add my own in. I had been toying with the following (admin_created_user_email2 is my new function):
function reset_admin_email(){
remove_filter( 'wpmu_signup_user_notification_email', 'admin_created_user_email' );
add_filter( 'wpmu_signup_user_notification_email', 'admin_created_user_email2', 1 );
}
I was reading this page that lists the actions/hooks I can tie into, but I can’t figure out which one to use (if any of them will even work)
Does anyone have experience with this to point me in the right direction?
Thanks
Levi
I was able to override the multi-site notification email by adding these:
Adding the three filters at bottom i.e. email,notification and subject allows you to override the content and the subject of the email.
@user2647 seems to be on the right path, but I think that this is more correct:
remove_filter
has no effect because /wp-admin/user-new.php runsadd_filter('wpmu_signup_user_notification_email', admin_created_user_email);
every time it loads, after plugins_loaded.
I got this to work by adding a new filter with a lower priority (higher number), so it runs after
admin_created_user_email
, which has the default priority (10):Would this kind of thing work?
Dylan has the correct answer but to elaborate.
Add a filter that fires after the default one using a higher priority then 10:
The function for the content:
Finally drop it into the mu-plugins folder
wp-content/mu-plugins
Most of the text in those emails is translatable, which means we can tap into WP’s gettext filter. I found the following method of implementing translations online but can’t find the original source.
First define your filter hook:
add_filter('gettext', [new AddAction(), 'gqa_text_strings'], 20, 3);
Then your translation function:
You know a string is translatable if it’s enclosed in the __() function. So in your case you would add the following: