Вопрос или проблема
Я хотел бы изменить обычное сообщение, отправляемое WordPress, которое гласит следующее:
Кто-то запросил сброс пароля для следующей учетной записи:
http://myexample.com/
Я знаю, что это сообщение приходит из wp-login.php, который содержит следующие строки:
$message = __('Кто-то запросил сброс пароля для следующей учетной записи:') . "\r\n\r\n";
$message .= network_home_url( "https://wordpress.stackexchange.com/" ) . "\r\n\r\n";
Есть ли способ изменить $message .= network_home_url( “https://wordpress.stackexchange.com/” ) на
http://myexample.com/member, добавив что-то в functions.php, возможно?
Большое спасибо.
Давайте проверим Codex и перейдем по ссылкам к исходному коду:
3029 function network_home_url( $path="", $scheme = null ) {
3030 if ( ! is_multisite() )
3031 return home_url($path, $scheme);
3032
3033 $current_site = get_current_site();
3034 $orig_scheme = $scheme;
3035
3036 if ( ! in_array( $scheme, array( 'http', 'https', 'relative' ) ) )
3037 $scheme = is_ssl() && ! is_admin() ? 'https' : 'http';
3038
3039 if ( 'relative' == $scheme )
3040 $url = $current_site->path;
3041 else
3042 $url = set_url_scheme( 'http://' . $current_site->domain . $current_site->path, $scheme );
3043
3044 if ( $path && is_string( $path ) )
3045 $url .= ltrim( $path, "https://wordpress.stackexchange.com/" );
3046
3047 /**
3048 * Фильтровать URL домашней сети.
3049 *
3050 * @since 3.0.0
3051 *
3052 * @param string $url Полный URL домашней сети, включая схему и путь.
3053 * @param string $path Путь относительно домашнего URL сети. Пустая строка
3054 * если путь не указан.
3055 https://core.trac.wordpress.org/browser/tags/4.3.1/src/wp-includes/link-template.php#L3029 * @param string|null $orig_scheme Схема для контекста URL. Принимает 'http', https://core.trac.wordpress.org/browser/tags/4.3.1/src/wp-includes/link-template.php#L3029'https',
3056 * 'relative' или null.
3057 */
3058 return apply_filters( 'network_home_url', $url, $path, $orig_scheme);
3059 }
Мы видим, что да, существует фильтр под названием network_home_url
, который мы можем использовать для изменения ссылки. Простой фильтр, подобный следующему, сделает это, хотя я сомневаюсь, что вам нужно что-то такое упрощенное на практике:
function alter_net_link_wpse_206603($url, $path, $orig_scheme) {
return 'http://myexample.com/member';
}
add_filter('network_home_url','alter_net_link_wpse_206603',10,3);
Ответ или решение
Чтобы изменить сообщение о сбросе пароля в WordPress, вы можете использовать фильтр network_home_url
. Этот фильтр позволяет вам изменить URL, который используется в стандартном сообщении. В вашем случае вам нужно заменить текущий URL на http://myexample.com/member
.
Для этого откройте файл functions.php
вашей темы и добавьте следующий код:
function alter_net_link_wpse_206603($url, $path, $orig_scheme) {
return 'http://myexample.com/member'; // Замените на ваш URL
}
add_filter('network_home_url','alter_net_link_wpse_206603',10,3);
Объяснение кода:
-
Функция
alter_net_link_wpse_206603
:- Эта функция принимает три параметра:
$url
,$path
и$orig_scheme
. - Мы просто возвращаем ваш новый URL —
http://myexample.com/member
.
- Эта функция принимает три параметра:
-
Добавление фильтра:
- С помощью функции
add_filter
мы подключаем нашу функцию к фильтруnetwork_home_url
. - Параметры
10
и3
указывают приоритет фильтра и количество принимаемых параметров соответственно.
- С помощью функции
Результат:
После добавления этого кода, всякий раз, когда будет отправлено сообщение о сбросе пароля, URL будет изменён на http://myexample.com/member
. Это решит вашу задачу изменения стандартного сообщения, отправляемого WordPress при запросе сброса пароля.
Надеюсь, это поможет! Если у вас есть дополнительные вопросы, не стесняйтесь задавать.