web-dev-qa-db-fra.com

Comment insérer un code de suivi JS sur une page avec le WP éditeur?

Mon client doit ajouter des blocs uniques de javascript à certaines pages afin de suivre les visiteurs. Comment puis-je faire cela?

Au début, j’ai essayé d’utiliser un champ personnalisé, mais celui-ci a tout effacé avant de l’afficher sur la page et j’ai eu un résultat vide. Ensuite, j'ai installé une extension Advanced Custom Fields qui vous permet d'ajouter du code à votre page, puis de l'appeler sur le modèle, mais le code est placé dans des balises de script qui rompent le code de suivi.

Donc, je suis un peu perdu pour le moment.

1
Bryan White

Utilisez des balises conditionnelles.

Modifiez le cinquième paramètre à charger dans le pied de page.

Remplacez get_stylesheet_directory_uri() par get_template_directory_uri() pour l’utiliser dans les thèmes parents.

add_action( 'wp_enqueue_scripts', 'add_tracking_scripts' );

function add_tracking_scripts() {
if ( is_page('slug') ) {
wp_register_script(
    'tracking-script',
    get_stylesheet_directory_uri() . '/tracking-script.js',
    false,
    '1.0',
    true
);

wp_enqueue_script( 'tracking-script' );
    }
}

Source http://codex.wordpress.org/Function_Reference/wp_enqueue_script

1
Brad Dalton

Vous pouvez utiliser des instructions conditionnelles pour le mettre au bas de la page. Recherchez les identificateurs numériques des pages appropriées, puis allez à Apparence> Éditeur et modifiez vos thèmes. Footer.php

<?php
if (is_page ('XX')) { ?>
// tracking code here for page XX
<?php
} elseif (is_page ('YY')) { ?>
// tracking code for another page YY

<?php
} 
?>

etc.

0
madlabmg

Vous étiez sur la bonne voie avant. Les champs personnalisés avancés sont parfaits pour cela, bien que vous puissiez utiliser n’importe quelle méthode pour ajouter un metabox à un type de publication/page/personnalisé.

Ajoutez une métabox textarea et insérez votre code de suivi. Si vous utilisez ACF, assurez-vous de définir le champ "Formatage" sur "Pas de formatage".

Dans votre thème, vous pouvez simplement écrire un petit code conditionnel dans votre en-tête/pied de page:

<html>
<head>
<!-- all your header code -->
<?php if($code_to_insert = get_field('your_field_name_in_ACF')) { ?>
<?php echo $code_to_insert; ?>
<?php }; ?>
</head>

Assurez-vous simplement d'inclure les balises dans votre code. Cela ne devrait placer le code dans la page que si la page contient quelque chose dans la metabox. Bien sûr, il ne s'agit en aucun cas de vérifier ce que vous insérez, cela risquerait de casser vos pages si quelqu'un y insérait un code incorrect. :)

Le meilleur moyen serait d'écrire une fonction, de l'inclure dans votre modèle et d'utiliser des métadonnées (champ personnalisé) pour l'activer. Mais c'est un peu plus de travail. Ce que j'ai décrit ci-dessus est très facile si vous utilisez ACF.

Bonne chance!

0
user48230