зарегистрировать js для определенной страницы в script-calls.php

У меня есть код js

 var shown = true; var parent = document.querySelector('.parent'); var child = document.querySelector('.child'); parent.addEventListener('mouseenter', function(){ child.style.opacity = shown ? 0 : 1; shown = !shown; }); 

js относится к следующему css

 * { margin: 0; padding: 0; } .parent { width: 100%; margin: 10px auto; position: relative; } .child { position: absolute; top: 0; width: 100%; height: 100%; display: block; overflow: hidden; transition: opacity 0.5s linear; } p { padding: 1em; } 

и html :

 <div class="parent"> <img src="http://img.ruphp.com/javascript/bigstock-Test-word-on-white-keyboard-27134336.jpg" alt="" width="500px" height="auto" /> <div class="child"> <img src="http://maui.hawaii.edu/tlc/wp-content/uploads/sites/53/2013/11/testing.jpg" alt="" width="500px" height="auto" /> </div> </div> 

Проблема в том, что я использую этот код для определенной страницы , а не для всего сайта, и он отлично работает, за исключением того факта, что на любой другой странице ( Home и т. Д.) Я получаю сообщение об ошибке, .parent на .parent элемента .parent . Ничего необычного, пока я не нуждаюсь в нем на этой странице.

 Uncaught TypeError: Cannot read property 'addEventListener' of null(anonymous function) @ shomz.js:6 

Если это помогает, в этот момент код js определенный как shomz.js , регистрируется следующим образом:

 ... // Main Scripts function register_js() { if (!is_admin()) { $url_prefix = is_ssl() ? 'https:' : 'http:'; // Register wp_register_script('shomz', THB_THEME_ROOT . '/assets/js/plugins/shomz.js', 'jquery', null, TRUE); // Enqueue wp_enqueue_script('shomz'); wp_localize_script( 'app', 'themeajax', array( 'url' => admin_url( 'admin-ajax.php' ) ) ); } } ... 

На этом этапе, чтобы избежать определения .parent/.child для каждой отдельной страницы, мне было интересно, есть ли возможность зарегистрировать js в файле script-calls.php , будучи активным только для определенной страницы (s ) по id, например?

Просто заверните вызов сценария в очередь вызова функции с условием if, проверяющим, совпадает ли идентификатор текущей страницы с идентификатором той стороны, на которой вы хотите, чтобы скрипт был установлен в очередь или нет.

 // Main Scripts function register_js() { if (!is_admin()) { $url_prefix = is_ssl() ? 'https:' : 'http:'; /* Get id of current page*/ $page_id = get_queried_object_id(); /* Compare the desired page's id with the current page's id, if they match, enqueue shomz*/ if(YOUR_ID == $page_id){ wp_register_script('shomz', THB_THEME_ROOT . '/assets/js/plugins/shomz.js', 'jquery', null, TRUE); wp_enqueue_script('shomz'); } wp_localize_script( 'app', 'themeajax', array( 'url' => admin_url( 'admin-ajax.php' ) ) ); } }