web-dev-qa-db-fra.com

Changer le lien 'Retour au site web' dans wp-login.php

Le formulaire de connexion de la page wp-login.php comporte un lien en bas indiquant "Retour à nom de site Web ". Ce lien redirige toujours le page d'accueil Je voudrais qu'il redirige vers la page de l'utilisateur.

J'imagine que cela nécessite un crochet ajouté à functions.php mais je ne sais pas comment et je n'ai rien trouvé pendant la recherche.

Des idées?

1
stemie

Vous pouvez y parvenir en utilisant Javascript et le crochet d'action login_footer pour modifier l'attribut href du lien 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;
}

?>

Modifier:

Merci à @brasofilo answer, vous devrez peut-être charger jQuery dans wp-login.php. Il est possible qu'il soit déjà chargé par votre thème ou par un autre plugin. Vous devez donc vérifier. Pour charger jQuery afin d’utiliser le code ci-dessus:

add_action('login_head', 'jquery_for_wp_login');

function jquery_for_wp_login() {
    wp_print_scripts(array('jquery'));
}
2
Ahmad M

Ce lien ne possède aucun crochet permettant de le modifier directement.

Cela doit être fait avec Javascript, et comme la page de connexion ne charge pas jQuery par défaut  (du moins, c'est ce qui se passe dans mon environnement de test) , J'ai recherché une solution JS pure .

Ainsi, ce code s'accroche à l'action login_footer et imprime un script JS qui modifiera le lien en 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
}
1
brasofilo

Si vous cherchez une solution PHP, je vous conseille ceci:

  • Vous ne pouvez utiliser aucun crochet/action/filtre spécifique pour ce lien.
  • Cependant, il y a le filtre général home_url en action sur cette page de connexion.

Ce que vous pouvez faire, c'est prendre l'empreinte des fonctions de raccordement appelées sur cette page, vérifier la page demandée et créer un filtrage conditionnel filtrant la valeur home_url uniquement dans ce scénario spécifique.

Enveloppez-le bien dans un plugin qui lui est propre et conservez-le dans le dossier des plugins à utiliser par exemple. Vous empêche de pirater le noyau (par exemple, si vous n'utilisez aucun contrôle de version).

Sinon, si vous êtes sous git, branchez-vous, ajoutez votre propre filtre pour ce lien, présentez le plug-in et restez à jour quand vous en avez besoin (moins de tracas).

1
hakre