Ответ 1
Существует "секретная" страница настроек, которая позволяет вам изменить все настройки в таблице параметров.
Получите доступ к нему, изменив URL с /options-general.php на /options.php
Я создал один сайт на промежуточном сервере. Я хочу изменить адрес электронной почты администратора для этого промежуточного сайта. Поскольку в то время я хочу что-то протестировать на промежуточном сайте и хочу, чтобы клиенту не отправлялось никакого электронного письма (исходное электронное письмо администратора), я хочу изменить основное электронное письмо администратора.
Но когда я меняю адрес электронной почты администратора, я получаю ссылку для подтверждения на мой новый адрес электронной почты администратора.
Адрес электронной почты администратора не изменится, пока я не нажму на ссылку в электронном письме с подтверждением.
После того, как я нажму ссылку подтверждения, первоначальный администратор получит уведомление об изменении адреса электронной почты администратора.
Я хочу отключить уведомление об изменении адреса электронной почты администратора, а также новую ссылку подтверждения адреса электронной почты администратора в WordPress.
Как мне это сделать? Не могли бы вы мне помочь? Есть ли код для этого?
Существует "секретная" страница настроек, которая позволяет вам изменить все настройки в таблице параметров.
Получите доступ к нему, изменив URL с /options-general.php на /options.php
Тот, который вы пытаетесь заменить, на самом деле является адресом электронной почты в настройках Wordpress, а не электронной почтой пользователя wp. Это можно изменить непосредственно в базе данных в таблице wp_options
, где option_name
есть admin_email
Или с заданным запросом на обновление:
UPDATE `wp_options` SET `option_value` = '[email protected]' WHERE `option_name` = 'admin_email';
Примечание. Получите дамп и попробуйте сначала локально. Не тестируйте на производстве.
Изменить с помощью 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";
Проще использовать phpMyAdmin
wp_options> admin_email
Вы должны войти в MySQL сервер
и выполните следующий запрос
UPDATE 'wp_options' SET 'option_value' = '[email protected]' WHERE 'option_id' = 6;
Есть несколько способов изменить адрес электронной почты администратора без использования стороннего плагина.
Кроме того, кроме admin_email, есть еще одно значение, которое необходимо изменить. Независимо от того, что вы измените значение admin_email
в БД, уведомление о подтверждении останется, если вы тоже не измените new_admin_email
.
Обновление через базу данных:
В случае обновления опции через БД, есть две опции, которые необходимо изменение: admin_email
и new_admin_email
.
UPDATE wp_options SET option_value = '[email protected]' WHERE
option_name LIKE 'admin_email'
OR
option_name LIKE 'new_admin_email';
примечание: хотя по умолчанию каждая база данных WordPress имеет префикс wp_
для своих таблиц, их можно изменить, поэтому проверьте в wp-config.php значение $table_prefix
.
Обновление через options.php:
Другой способ, без использования какого-либо плагина, заключается в доступе к секретной странице /wp-admin/options.php
. Однако может быть слишком много опций, и из-за того, что для каждого сервера по-разному задан лимит переменных $_POST
изменить его таким образом совершенно невозможно.
Узнайте больше о max_input_vars
https://www.php.net/manual/en/info.configuration.php
Обновление с помощью functions.php в активной теме:
Вы можете установить один временной код (и удалить его после) в functions.php вашей активной темы, чтобы обновить эти параметры:
update_option( 'admin_email', '[email protected]' );
а также
update_option( 'new_admin_email', '[email protected]' );
Поместите их в некоторый admin_init
вызов действия admin_init
.
Обновление через wp-cli:
Другой способ обновить электронную почту администратора - через wp-cli (если у вас есть доступ к терминалу ssh):
wp option update admin_email '[email protected]'
а также
wp option update new_admin_email '[email protected]'
см. больше о командах опции wp:
Запустить этот запрос. Это изменит идентификатор электронной почты без подтверждения.
UPDATE `wp_users` SET `user_email` = 'newemail' WHERE `user_email` = 'old_email';
У меня была такая же проблема, поэтому я написал плагин для отката ссылки на ссылку подтверждения. Вы можете загрузить его на регю .org:
Изменить настройку электронной почты администратора без исходящей электронной почты
Вот код:
<?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 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;
}
}
Вы можете отключить подтверждение по электронной почте, просто добавив следующий код в вашу тему function.php
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 );
Адрес электронной почты администратора сети изменяется из таблицы wp_sitemeta. Используйте следующий запрос в phpmyadmin или любом клиенте mysql, чтобы обновить электронную почту, если вы не можете изменить настройки сетевого администратора.
UPDATE 'wp_sitemeta' SET 'meta_value' = '[email protected]' WHERE 'meta_value' = '[email protected]';
Примечание: пожалуйста, используйте префикс таблицы, который используется в db, если в вашем случае это не wp.