web-dev-qa-db-fra.com

Insérer du code lorsque les utilisateurs proviennent d'un référent spécifique

Laissez-moi élaborer, parce que je pense que cette question est assez étrange.

Je souhaite pouvoir ajouter du code à mon message lorsqu'un utilisateur provient d'un référent spécifique et arrive à une URL spécifique.

Cela ne se produira que dans une URL spécifique telle que myweb.com/addcode. Ainsi, lorsque l'utilisateur y arrivera, le processus suivant sera déclenché:

  1. Il va vérifier le référant
  2. Si le référent correspond, l'utilisateur sera redirigé vers un message aléatoire et le code sera ajouté.
  3. Sinon, l'utilisateur sera simplement redirigé vers un message aléatoire.

Je me suis déjà familiarisé avec la vérification du référent et la redirection aléatoire des publications:

Redirection aléatoire.

En effectuant une recherche dans stackoverflow, j'ai trouvé ce sujet où ils donnent d'excellentes solutions pour afficher des messages aléatoires.

Référent.

Afin de vérifier le référent j'utilise wp_get_referer ()

$referer = wp_get_referer();
if (  strpos($referer ,'http://wanteddomain.com') !== false )

Il ne me reste donc plus qu'à trouver un moyen propre "d'insérer" du code dans mes messages, de préférence juste au début du corps.

Je veux pouvoir ajouter du code html pur mais je n’ai pas pu trouver d’informations relatives au sujet (j’utilise sûrement le mauvais libellé).

Toute aide ou direction sur quoi ou où chercher serait grandement appréciée!

Et merci d'avoir pris le temps de lire ce non-sens!

1
Luis Fernández

Votre message a du sens, vous voulez juste changer/ajouter du contenu basé sur le référant, ce qui est très courant parmi les sites Web.

Maintenant, comme vous l'avez demandé juste au début du corps. Je ne crois pas qu'il y ait un crochet standard, autre que get_header();. Cette fonction est généralement située au tout début de la plupart des fichiers modèles.

La structure commune d'un seul post ressemble à ceci:

<?php get_header(); ?>

    // Some content
<?php get_sidebar(); // If your theme has a sidebar ?>

<?php get_footer(); ?>

Vous devriez donc pouvoir vous y accrocher et générer votre contenu. Cela va dans le functions.php de votre thème ou dans un plugin:

add_action('get_header', 'my_referrer_check');
function my_referrer_check () {
    $referer = wp_get_referer();
    if (  strpos($referer ,'http://wanteddomain.com') !== false ){
        // The rest of your code here
    }
}

Ceci ajoutera automatiquement votre code au hook d’action get_header.

L’autre solution consiste à envelopper votre code dans une fonction et à l’utiliser dans votre modèle, où vous le souhaitez:

function my_referrer_check () {
    $referer = wp_get_referer();
    if (  strpos($referer ,'http://wanteddomain.com') !== false ){
        // The rest of your code here
    }
}

Maintenant, en utilisant my_referrer_check();, vous pouvez obtenir votre contenu n’importe où.

Quelques fonctions pratiques

Sur le chemin de la conquête de votre aventure, vous aurez peut-être besoin de quelques alliés. Ces fonctions pourraient bien vous servir, au moment des besoins:

  • Pour rediriger un utilisateur: wp_redirect('URL-HERE'); ou wp_safe_redirect('URL-HERE'); suivi instantanément d'une die(); ou exit();
  • Pour vérifier si vous êtes sur un seul post ou à un autre endroit de vos modèles: is_single(), is_page(), is_home(), etc.
  • Pour obtenir les paramètres de la requête: get_query_var('paremeter-here');
1
Jack Johansson