Измените ссылку "Вернуться на веб-сайт" в wp-login.php
Форма входа на странице wp-login.php внизу есть ссылка с надписью "Вернуться к имени веб-сайта" Эта ссылка всегда перенаправляет на домашнюю страницу, я бы хотел, чтобы она перенаправляла на страницу, с которой пришел пользователь.
Я полагаю, что для этого требуется крючок, добавленный к functions.php но я не уверен, как и не смог ничего найти во время поиска.
Есть идеи?
3 answers
Вы можете добиться этого с помощью Javascript и login_footer
крючка действия, чтобы изменить атрибут href
ссылки Back to
:
<?php
add_action('login_footer', 'ad_login_footer');
function ad_login_footer() {
$ref = wp_get_referer();
if ($ref) :
?>
<script type="text/javascript">
jQuery(document).ready(function($){
$("p#backtoblog a").attr("href", '<?php echo esc_js($ref); ?>');
});
</script>
<?php
endif;
}
?>
Редактировать:
Благодаря ответу @brasofilo вам может потребоваться загрузить jQuery в wp-login.php
. Возможно, он уже загружен вашей темой или другим плагином, поэтому вам нужно проверить. Чтобы загрузить jQuery, чтобы использовать приведенный выше код:
add_action('login_head', 'jquery_for_wp_login');
function jquery_for_wp_login() {
wp_print_scripts(array('jquery'));
}
Эта ссылка не имеет никакого крючка , который позволяет изменять ее напрямую.
Это должно быть сделано с помощью Javascript, и, поскольку страница входа в систему по умолчанию не загружает jQuery ( по крайней мере, это то, что происходит в моей тестовой среде), Я искал чистое решение JS.
Итак, этот код подключается к действию login_footer
и печатает сценарий JS, который изменит ссылку на history.go(-1);
.
add_action( 'login_footer', 'change_back_to_blog_wpse_82152' );
function change_back_to_blog_wpse_82152()
{
?>
<script type="text/javascript">
function init() {
// quit if this function has already been called
if (arguments.callee.done) return;
// flag this function so we don't do the same thing twice
arguments.callee.done = true;
// kill the timer
if (_timer) clearInterval(_timer);
// CHANGE THE LINK
document.
getElementById('backtoblog').
getElementsByTagName('a')[0].
href = 'javascript:history.go(-1);';
};
/* for Mozilla/Opera9 */
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", init, false);
}
/* for Internet Explorer */
/*@cc_on @*/
/*@if (@_win32)
document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
var script = document.getElementById("__ie_onload");
script.onreadystatechange = function() {
if (this.readyState == "complete") {
init(); // call the onload handler
}
};
/*@end @*/
/* for Safari */
if (/WebKit/i.test(navigator.userAgent)) { // sniff
var _timer = setInterval(function() {
if (/loaded|complete/.test(document.readyState)) {
init(); // call the onload handler
}
}, 10);
}
/* for other browsers */
window.onload = init;
</script>
<?php
}
Если вы ищете решение на PHP, я бы выбрал следующее:
- Для этой ссылки нет конкретного крючка/действия/фильтра, который вы могли бы использовать.
- Однако существует общее
home_url
фильтр в действии на этой странице входа.
Что вы можете сделать, так это взять отпечаток функций-крючков, которые вызываются на этой странице, проверить запрошенную страницу и создать условную фильтрацию, которая фильтрует значение home_url
только в этом конкретном сценарий.
Красиво заверните его в собственный плагин и сохраните, например, в папке плагинов, которые необходимо использовать. Предотвращает взлом ядра (например, если вы не используете какой-либо контроль версий).
В противном случае, если вы находитесь под git, просто разветвляйтесь, добавьте свой собственный фильтр для этой ссылки, введите плагин и будьте в курсе, когда вам нужно (меньше проблем).