Условные теги в Wordpress: Как запустить другой файл JS в зависимости от идентификатора страницы или заголовка - PullRequest
0 голосов
/ 27 мая 2011

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

Если идентификатор страницы равен [1], запустите somescript.js если идентификатор страницы [15], запустите someotherscript.js если идентификатор страницы [195], запустите Yetanotherscript.js

если по умолчанию, запустите defaultscript.js

Может кто-нибудь показать мне, как это делается в WordPress с условными тегами?

С уважением,

Дмитрий Воронцов

Ответы [ 2 ]

3 голосов
/ 27 мая 2011

Вы НИКОГДА не должны вызывать эхо-скрипт в заголовке.Если вы так и сделаете, плагины испортят зависимости и загрузят несколько копий скриптов.

Создайте функцию в functions.php

 add_action( 'init', 'dim_load_scripts' );
function dim_load_scripts() {
    wp_register_script( 'my-first-script', get_bloginfo( 'stylesheet_directory' ). '/path/to/script.js', array( 'jquery' ), true);  
    //the jquery is only needed if it is a depencency
    wp_register_script( 'my-second-script', get_bloginfo( 'stylesheet_directory' ). '/path/to/script.js', array( 'jquery' ), true); 
    wp_register_script( 'my-third-script', get_bloginfo( 'stylesheet_directory' ). '/path/to/script.js', array( 'jquery' ), true);  
    wp_register_script( 'my-fourth-script', get_bloginfo( 'stylesheet_directory' ). '/path/to/script.js', array( 'jquery' ), true);   

  if (is_page( 22 ) ) {
      wp_enqueue_script( 'my-first-script' );
  } elseif 
     (is_page ( 33 ) ) {
      wp_enqueue_script( 'my-second-script' );
  } elseif 
     (is_page ( 33 ) ) {
    wp_enqueue_script( 'my-third-script' );
  } else 
   if (is_page ( 33 ) ) {
    wp_enqueue_script( 'my-fourth-script' );
    }
}

Код в ваших комментарияхсинтаксические ошибки.Исправлено:

function dim_load_scripts() { 
wp_register_script( 'homescript.js', get_bloginfo( 'stylesheet_directory' ). '/supersized/js/homescript.js', array( 'jquery' ), true); 
wp_register_script( 'defaultscript.js', get_bloginfo( 'stylesheet_directory' ). '/supersized/js/defaultscript.js', array( 'jquery' ), true);

      if (is_home() ) {
     wp_enqueue_script( 'homescript.js' );   
     } elseif(is_page ( 11 ) ) { 
    wp_enqueue_script( 'defaultscript.js' );     
    }
    } 

Также это должно быть в functions.php.Я не буду работать в wp-header.php

0 голосов
/ 30 мая 2011

Попробовав предложенные решения, я не смог заставить их работать. Я уверен, что совет Криса совершенно тверд, и это я делаю что-то не так, но до сих пор мне приходилось прибегать к решению по клейкой ленте:

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

...