Le moyen le plus efficace d'ajouter un fichier javascript à une publication et / ou à des pages spécifiques?

17

Je me demande quelle est la méthode la plus efficace pour ajouter un fichier javascript spécifiquement pour une publication et / ou une page.

Voici quelques solutions que j'ai trouvées:

  • Passez en mode d'édition HTML et postez votre JavaScript dedans (très mauvaise solution)
  • Champs personnalisés avec le JavaScript spécifique pour cette publication / page dans les paires clé / valeur
  • Dans footer.php, chargez les fichiers JavaScript en fonction de la page sur laquelle vous vous trouvez (cela conduit cependant à beaucoup de conditions)

Sur une note latérale, aucun des fichiers JavaScript ne sera partagé entre les pages - il sera littéralement spécifique à ce que vous consultez actuellement.

Des pensées?

sports de souris
la source
Les boîtes méta / champs personnalisés sont votre meilleure option
Miha Rekar
Comment définiriez-vous l'efficacité?
fuxia
1
Par «efficace», j'entends le moins de redondance de code et la façon la plus efficace de le faire spécifiquement pour une seule publication / page.
mousesports

Réponses:

30

Je pense que le meilleur équilibre entre l'efficacité et l'utilisation de méthodes wordpress appropriées pour ajouter du javascript serait d'ajouter quelque chose dans ce sens à votre fichier themes functions.php. Par exemple:

functions.php:

function load_scripts() {
    global $post;

    if( is_page() || is_single() )
    {
        switch($post->post_name) // post_name is the post slug which is more consistent for matching to here
        {
            case 'home':
                wp_enqueue_script('home', get_template_directory_uri() . '/js/home.js', array('jquery'), '', false);
                break;
            case 'about-page':
                wp_enqueue_script('about', get_template_directory_uri() . '/js/about-page.js', array('jquery'), '', true);
                break;
            case 'some-post':
                wp_enqueue_script('somepost', get_template_directory_uri() . '/js/somepost.js', array('jquery'), '1.6', true);
                break;
        }
    } 
}

add_action('wp_enqueue_scripts', 'load_scripts');

Cela vous donne un contrôle total sur ce qui est chargé où, un emplacement centralisé dans votre fichier de thèmes functions.php pour éditer ce qui est chargé où: et, de cette façon, utilise des méthodes wordpress pour ajouter javascript à vos publications et pages en toute sécurité .

Ben HartLenn
la source
1
Belle petite fonction. Vous avez raison de dire qu'il est utile d'avoir un «emplacement centralisé». Merci beaucoup.
mousesports
3
Je suppose que cela peut être nettoyé un peu. Vous vérifiez essentiellement la même chose avec deux boîtiers de commutation différents. Je dirais combiner les deux commutateurs et le conditionnel si possible if (is_page() || is_single()). Que pensez-vous Ben?
mousesports
Cela ressemble à une amélioration pour moi. Bon!
Ben HartLenn
@Ben est-ce le thème functions.php one inside ou dans wp-includes ? mon titre de la page est Accession à la ligne et je l' ai mis votre fonction changeing homepour , Access to Home Onlinemais il ne fonctionne pas?
Ciasto piekarz
@Ciastopiekarz J'ai mis à jour ma réponse afin de mieux montrer que le code va dans votre fichier themes functions.php.
Ben HartLenn
2

Ce que je ferais, c'est placer dans le pied de page ou l'en-tête et utiliser les conditions php.

Par exemple:

<?php if (is_page ('your-page')){?>

  <script type="text/javascript" src"the file path"></script>

<?php } elseif ( is_page ('another')){?>

  <script type="text/javascript" src"the file path"></script>

<?php } else { ?>

  <script type="text/javascript" src"the file path"></script>

<?php } ?>

De cette façon, vous n'appelez pas tous les scripts tout le temps à chaque chargement de page et vous appelez uniquement ceux dont vous avez besoin.

Voici un lien vers le codex Wordpress http://codex.wordpress.org/Conditional_Tags

Et si vous avez des scripts spéciaux qui ne doivent être appelés que par publication, utilisez des champs personnalisés.

Nicole
la source
Merci Nicole - c'était le numéro 3. C'est une solution décente étant donné que je ne vais pas avoir beaucoup de pages ... toujours en considération.
mousesports
Ce que j'ai ci-dessus peut être utilisé avec les différents éléments du codex wordpress tels que: is_categories, is_single (pour les messages), is_post_type ... J'ai ajouté un lien vers la liste conditionnelle de wordpress dans ma réponse ci-dessus.
Nicole
0

L'autre moyen testé est ci-dessous, ajoutez la page directement à partir de l'éditeur et ajoutez des commentaires avec la balise de script, sinon cela ne fonctionnera pas.

<script type="text/javascript">
<!--
var a = 5;
alert("hello world. The value of a is: " + a);
-->
</script>
Dev G
la source