Ich habe eine Website im Staging-Server erstellt. Ich möchte die E-Mail-Adresse des Administrators für diese Staging-Site ändern. Da ich etwas auf der Staging-Site testen möchte, wird zu diesem Zeitpunkt keine E-Mail an den Client gesendet (ursprüngliche Admin-E-Mail), sodass ich die Admin-E-Mail ändern möchte. Die E-Mail-Adresse des Administrators ändert sich erst, wenn ich auf den Link in der Bestätigungs-E-Mail klicke. Nachdem Sie auf den Bestätigungs-Link geklickt haben, erhält der ursprüngliche Admin die Benachrichtigung über Admin-E-Mail-Änderungen Adressbestätigungslink in WordPress Wie mache ich das? Kannst du mir bitte Helfen? Wenn es einen Code dafür gibt?
Es gibt eine "geheime" Einstellungsseite, auf der Sie alle Einstellungen in der Optionstabelle ändern können.
Greifen Sie darauf zu, indem Sie die URL von /options-general.php in /options.php ändern
Diejenige, die Sie ersetzen möchten, ist die E-Mail in den Wordpress-Einstellungen und nicht die Wp-Benutzer-E-Mail. Dieser kann direkt in der Datenbank in der Tabelle wp_options
geändert werden, wobei option_name
admin_email
ist.
Oder mit der angegebenen Aktualisierungsabfrage:
UPDATE `wp_options` SET `option_value` = '[email protected]' WHERE `option_name` = 'admin_email';
Hinweis: Holen Sie sich ein Dump und versuchen Sie es zuerst auf dem lokalen. Testen Sie nicht in der Produktion.
Ändern Sie mit DB
//email
UPDATE `wp_users` SET `user_email` = "new_email_address" WHERE `wp_users`.`user_login` = "admin";
//password
UPDATE `wp_users` SET `user_pass` = MD5('new_password_here') WHERE `wp_users`.`user_login` = "admin";
Sie müssen den mysql-Server eingeben
und führen Sie die folgende Abfrage aus
UPDATE `wp_options` SET `option_value` = '[email protected]' WHERE `option_id` = 6;
Einfachere Verwendung von phpMyAdmin
wp_options> admin_email
Es gibt nur wenige Möglichkeiten, die Administrator-E-Mail-Adresse zu ändern, ohne ein Plugin eines Drittanbieters zu verwenden.
Neben admin_email muss noch ein weiterer Wert geändert werden. Unabhängig davon, ob Sie den Wert admin_email
In DB ändern, bleibt eine Bestätigungsmeldung erhalten, es sei denn, Sie ändern auch new_admin_email
.
Aktualisierung über die Datenbank:
Bei der direkten Aktualisierung der Option über DB müssen zwei Optionen geändert werden: admin_email
Und new_admin_email
.
UPDATE wp_options SET option_value = '[email protected]' WHERE
option_name LIKE 'admin_email'
OR
option_name LIKE 'new_admin_email';
Hinweis: Während standardmäßig jede WordPress Datenbank wp_
Präfix für ihre Tabellen hat, können sie sein geändert, überprüfen Sie in wp-config.php für den Wert $table_prefix
.
Aktualisierung über options.php:
Ein anderer Weg ohne die Verwendung eines Plugins ist wie erwähnt der Zugriff auf die geheime Seite /wp-admin/options.php
. Möglicherweise gibt es jedoch zu viele Optionen, und aufgrund einer Reihe von $_POST
- Variablen ist das Limit für jeden Server unterschiedlich festgelegt, sodass es unmöglich ist, es auf diese Weise zu ändern.
Weitere Informationen zu max_input_vars
https://www.php.net/manual/en/info.configuration.php
Aktualisierung über functions.php im aktiven Theme:
Sie können einen Zeitcode in functions.php Ihres aktiven Themes einstellen (und diesen danach löschen), um diese Optionen zu aktualisieren:
update_option( 'admin_email', '[email protected]' );
und
update_option( 'new_admin_email', '[email protected]' );
Fügen Sie diese in einen admin_init
- Aktionsrückruf ein.
Aktualisierung über wp-cli:
Eine andere Möglichkeit, Admin-E-Mails zu aktualisieren, ist über wp-cli (wenn Sie Zugriff auf Terminal ssh haben):
wp option update admin_email '[email protected]'
und
wp option update new_admin_email '[email protected]'
Weitere Informationen zu wp-Optionsbefehlen:
Sie können die E-Mail-Bestätigung deaktivieren, indem Sie einfach den folgenden Code in Ihre theme function.php einfügen
remove_action( 'add_option_new_admin_email', 'update_option_new_admin_email' );
remove_action( 'update_option_new_admin_email', 'update_option_new_admin_email' );
/**
* Disable the confirmation notices when an administrator
* changes their email address.
*
* @see http://codex.wordpress.com/Function_Reference/update_option_new_admin_email
*/
function wpdocs_update_option_new_admin_email( $old_value, $value ) {
update_option( 'admin_email', $value );
}
add_action( 'add_option_new_admin_email', 'wpdocs_update_option_new_admin_email', 10, 2 );
add_action( 'update_option_new_admin_email', 'wpdocs_update_option_new_admin_email', 10, 2 );
Führen Sie diese Abfrage aus. Dadurch wird die E-Mail-ID ohne Bestätigung geändert
UPDATE `wp_users` SET `user_email` = 'newemail' WHERE `user_email` = 'old_email';
Ich hatte das gleiche Problem, also schrieb ich ein Plugin, um die Bestätigungslink-Funktion zurückzusetzen. Sie können es auf dem .org-Repo herunterladen:
Admin-E-Mail-Einstellung ohne ausgehende E-Mail ändern
Hier ist der Code:
<?php
/*
Plugin Name: Change Admin Email Setting Without Outbound Email
Plugin URI: https://wp-bdd.com/change-admin-email/
Description: Restores functionality removed since WordPress 4.9. Allows the changing of the admin email by admins in single site without outbound email or recipient email credentials.
Version: 1.0
Author: John Dee
Author URI: https://wp-bdd.com/
*/
$ChangeAdminEmailPlugin = new ChangeAdminEmailPlugin;
class ChangeAdminEmailPlugin{
public function __construct(){
//This plugin doesn't do anything unless it's WordPres version +4.9 and single site
if($this->isWordPressMinimiumVersion("4.9.0") && (!( is_multisite()))){
//pulls the default actions
remove_action( 'add_option_new_admin_email', 'update_option_new_admin_email' );
remove_action( 'update_option_new_admin_email', 'update_option_new_admin_email' );
//When you actually complete the change, another email gets fired to the old address
//this filter overides this:
add_filter('send_site_admin_email_change_email', function(){return FALSE;}, 10, 3 );
//hooks our own custom method to update the email
add_action( 'add_option_new_admin_email', array($this, 'updateOptionAdminEmail'), 10, 2 );
add_action( 'update_option_new_admin_email', array($this, 'updateOptionAdminEmail'), 10, 2 );
//this fixes the text in English. Translators wanted for other languages.
add_action('wp_after_admin_bar_render', array($this, 'modifyOptionsGeneralPHPForm'));
}
}
public function updateOptionAdminEmail( $old_value, $value ) {
update_option( 'admin_email', $value );
}
public function isWordPressMinimiumVersion($version){
global $wp_version;
if (version_compare($wp_version, $version, ">=")) {
return TRUE;
} else {
return FALSE;
}
}
//Changes the form on admin area options-general.php. Doesn't do anything unless on this page.
public function modifyOptionsGeneralPHPForm(){
$screen = get_current_screen();
if($screen->base == "options-general"){
add_filter( 'gettext', array($this, 'filterText'), 10, 3 );
}
}
//Changes the English text of WP core. Inspired by https://wordpress.stackexchange.com/questions/188332/override-default-wordpress-core-translation
public function filterText( $translated, $original, $domain ) {
if ( $translated == "This address is used for admin purposes. If you change this we will send you an email at your new address to confirm it. <strong>The new address will not become active until confirmed.</strong>"){
$translated = __("This address is used for admin purposes.");
}
return $translated;
}
}