在wp-login.php中更改‘Back to WebSite’链接

时间:2013-01-18 作者:stemie

wp login页面上的登录表单。php在底部有一个链接,上面写着“返回网站名称”,这个链接总是重定向到主页,我希望它重定向到用户来自的页面。

我想这需要在函数中添加一个钩子。php,但我不知道如何搜索,也无法在搜索时找到任何内容。

有什么想法吗?

3 个回复
最合适的回答,由SO网友:Ahmad M 整理而成

您可以使用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;
}

?>

Edit:

多亏了@brasofilo answer,您可能需要在wp-login.php. 它可能已经由您的主题或其他插件加载,因此您必须进行检查。要加载jQuery以使用上述代码,请执行以下操作:

add_action(\'login_head\', \'jquery_for_wp_login\');

function jquery_for_wp_login() {
    wp_print_scripts(array(\'jquery\'));
}

SO网友:brasofilo

该链接don\'t have any hook 允许直接修改它。

它必须使用Javascript来完成,而且,由于登录页面在默认情况下不加载jQuery(至少在我的测试环境中是这样的),因此我搜索了pure JS solution.

因此,这段代码与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
}

SO网友:hakre

如果您正在寻找PHP解决方案,我会这样做:

没有可用于该链接的特定挂钩/操作/过滤器home_url filter 在登录页面上执行您可以做的是获取该页面上调用的钩子函数的指纹,检查请求的页面,并创建一个条件筛选来筛选home_url 仅在此特定场景中有效。

将其很好地包装在自己的插件中,并将其保存在必用插件文件夹中。防止您入侵core(例如,如果您未使用任何版本控制)。

否则,如果您使用的是git,只需扩展,为该链接添加自己的过滤器,引入插件,并在需要时保持最新(减少麻烦)。

结束

相关推荐

WP_REDIRECT和搜索引擎机器人

我有一些网页和类别,你必须在有权访问的血液。我正在使用wp\\u重定向将任何未登录的人发送到首页,如果他们试图打开这些页面。阻止任何搜索机器人为这些页面编制索引就足够了吗?