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

Я считаю, что лучший баланс между эффективностью и использованием правильных методов WordPress для добавления JavaScript — это добавить что-то подобное в файл functions.php вашей темы. Например:
functions.php:
function load_scripts() {
global $post;
if( is_page() || is_single() )
{
switch($post->post_name) // post_name — это ярлык записи (slug), который здесь удобнее использовать для сопоставления
{
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 на ваши страницы и записи.

Хорошая небольшая функция. Ты прав насчёт полезности "централизованного расположения". Большое спасибо.

Думаю, это можно немного улучшить. По сути ты проверяешь одно и то же двумя разными switch-условиями. Я бы предложил объединить оба switch-условия, а условный оператор if можно сделать if (is_page() || is_single())
. Что думаешь, Бен?

@Ben это functions.php в теме или в wp-includes? Мой заголовок страницы — Access to Home Online, и я вставил вашу функцию, заменив home
на Access to Home Online
, но это не работает?

@Ciastopiekarz Я обновил свой ответ, чтобы четче показать, что код должен быть в файле functions.php вашей темы.

Я бы разместил код в футере или шапке сайта и использовал 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 Codex: http://codex.wordpress.org/Conditional_Tags
А если у вас есть специальные скрипты, которые могут понадобиться только для отдельных записей, используйте произвольные поля.

Спасибо, Николь - это был вариант №3. Достаточно неплохое решение, учитывая, что у меня будет не так много страниц... всё ещё рассматриваю его.

Другой проверенный способ — добавить код непосредственно на страницу через редактор и включить комментарии внутри тега script, иначе он не будет работать.
<script type="text/javascript">
<!--
var a = 5;
alert("Привет, мир. Значение переменной a равно: " + a);
-->
</script>
