Самый эффективный способ добавить файл JavaScript к конкретному сообщению и / или страницам?

17

Мне интересно, какой самый эффективный метод - добавить файл javascript специально для поста и / или страницы.

Вот несколько решений, которые я придумал:

  • Переключитесь в режим редактирования HTML и разместите там свой JavaScript (довольно плохое решение)
  • Пользовательские поля с определенным JavaScript для этого поста / страницы в парах ключ и значение
  • В footer.php загружайте файлы JavaScript в зависимости от того, на какой странице вы находитесь (хотя это приводит к большому количеству условий)

Напомним, что ни один из файлов JavaScript не будет разделен между страницами - он будет буквально зависеть от того, что вы просматриваете в данный момент.

Есть предположения?

Mousesports
источник
Мета-боксы / пользовательские поля - ваш лучший выбор
Миха Рекар
Как бы вы определили эффективность?
fuxia
1
Под «эффективным» я подразумеваю наименьшее количество избыточности кода и самый эффективный способ сделать это специально для одного поста / страницы.
mousesports

Ответы:

30

Я думаю, что лучший баланс между эффективностью и использованием правильных методов wordpress для добавления javascript - это добавить что-то вроде этого в ваш файл functions.php themes. Например:

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');

Это дает вам полный контроль над тем, что загружается , где централизованно в свои темы functions.php файл для редактирования , что загружается , где: и, таким образом , использует WordPress методы для добавления JavaScript для ваших постов и страниц безопасно .

Бен ХартЛенн
источник
1
Хорошая маленькая функция. Вы правы в том, что полезно иметь «централизованное местоположение». Огромное спасибо.
mousesports
3
Я думаю, это можно немного убрать. Вы в основном проверяете одно и то же с двумя разными распределительными коробками. Я бы сказал, объединить оба распределительные шкафы и условные, если это возможно if (is_page() || is_single()). Как вы думаете, Бен?
mousesports
Похоже, улучшение для меня. Хороший!
Бен ХартЛенн
@Ben является его functions.php одна тема внутри или в сор-включает в себя ? моя страница называется Access to Home Online, и я изменил вашу функцию homeна, Access to Home Onlineно она не работает?
Ciasto piekarz
@Ciastopiekarz Я обновил свой ответ, чтобы лучше показать, что код помещается в файл functions.php вашей темы.
Бен ХартЛенн
2

То, что я хотел бы сделать, это либо поместить в нижний колонтитул или заголовок и использовать условные выражения php.

Например:

<?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 } ?>

Таким образом, вы не будете постоянно вызывать все скрипты на каждой странице и будете вызывать только те, которые вам нужны.

Вот ссылка на кодекс Wordpress http://codex.wordpress.org/Conditional_Tags

И если у вас есть специальные сценарии, которые, возможно, потребуется вызывать только для каждого поста, используйте настраиваемые поля.

Николь
источник
Спасибо Николь - это было # 3. Это достойное решение, учитывая, что у меня не будет много страниц ... все еще рассматриваю это.
mousesports
Что выше, может использоваться с различными элементами кодекса WordPress, такими как: is_categories, is_single (для сообщений), is_post_type ... Я добавил ссылку на условный список WordPress в моем ответе выше.
Николь
0

Другой протестированный способ ниже - добавить страницу непосредственно из редактора и добавить комментарии с помощью тега script, иначе это не сработает.

<script type="text/javascript">
<!--
var a = 5;
alert("hello world. The value of a is: " + a);
-->
</script>
Dev G
источник