пользовательский пост с загрузкой скрипта за один пост

Я читал много вопросов и ответов здесь, на SO … (и в другом месте, но они не учитываются … lol)
Я думаю, что я следую правилам WP.org, но все равно он не загружает скрипты.

Сценарий: пользовательский шаблон для публикации в Php:

<?php /* * Template Name: YYY * Description: Form for YYY donation. * NO FOOTER */ get_header(); ?> <div id="content-yyy"> 

тема functions.php

 function donate_adding_scripts() { wp_register_script('donateParsleyJs', get_template_directory_uri() . '/js/parsley.min.js', array('jquery'),'1.11.1'); wp_enqueue_script('donateParsleyJs'); wp_register_script('donateParsleyHeJs', get_template_directory_uri() . '/js/he.js'); wp_enqueue_script('donateParsleyHeJs'); wp_register_script('donateJs', get_template_directory_uri() . '/js/donateJs.js', array('jquery'),'1.11.1', true); wp_enqueue_script('donateJs'); } function donate_adding_styles() { wp_register_script('donateStyle', get_template_directory_uri() . '/donateStyle.css'); wp_enqueue_script('donateStyle'); } function loadDonateScripts() { if (is_single()) { global $post; if($post->ID=="8436"){ // only for post Id = 8436 add_action( 'wp_enqueue_scripts', 'donate_adding_scripts' ); add_action( 'wp_enqueue_scripts', 'donate_adding_styles' ); } } } add_action( 'wp_enqueue_scripts', 'loadDonateScripts'); 

Поскольку я использую setLocal для parsleyjs, у меня есть

 <script type="text/javascript"> window.ParsleyValidator.setLocale('he'); </script> 

У меня есть несколько вопросов:

  1. добавление к functions.php не загружает CSS
  2. сценарии JS загружаются только в том случае, если я добавляю $in_footer=true в файл functions.php и get_footer(); к шаблону php
  3. Все, что сказал, что я хочу загрузить их только для конкретной персонализированной почты (ID = 8436), следовательно, function loadDonateScripts()

Я хочу, чтобы скрипты загружались (очевидно … duh), желательно в нижнем колонтитуле … Любые идеи?

Solutions Collecting From Web of "пользовательский пост с загрузкой скрипта за один пост"

Что делать, если вы полностью удалите функцию loadDonateScripts и просто добавьте условное loadDonateScripts перед тем, как loadDonateScripts в очередь скрипты, подобные следующим:

 function donate_adding_scripts() { if (is_single()) { global $post; if($post->ID=="8436"){ // only for post Id = 8436 wp_register_script('donateParsleyJs', get_template_directory_uri() . '/js/parsley.min.js', array('jquery'),'1.11.1'); wp_enqueue_script('donateParsleyJs'); wp_register_script('donateParsleyHeJs', get_template_directory_uri() . '/js/he.js'); wp_enqueue_script('donateParsleyHeJs'); wp_register_script('donateJs', get_template_directory_uri() . '/js/donateJs.js', array('jquery'),'1.11.1', true); wp_enqueue_script('donateJs'); } } } function donate_adding_styles() { if (is_single()) { global $post; if($post->ID=="8436"){ // only for post Id = 8436 wp_register_script('donateStyle', get_template_directory_uri() . '/donateStyle.css'); wp_enqueue_script('donateStyle'); } } } add_action( 'wp_enqueue_scripts', 'donate_adding_scripts'); add_action( 'wp_enqueue_scripts', 'donate_adding_styles'); 

Чтобы все вы пытались получить пользовательские скрипты, запущенные из functions.php, вот как это сделать:

  • WP v4.1.2
  • Th post – это настраиваемый пост шаблона
  • Мне нужно было загрузить 3 JSs – parsleyjs.js, he.js (i18n), custom_JsScript.js
  • Я также хотел, чтобы CSS в отдельном файле
  • Загружайте их только для определенной записи

     function donate_adding_scripts() { if (is_singular()) { global $post; if($post->ID=='8436'){ // only for post Id = 8436 wp_register_script('donateParsleyHeJs', get_template_directory_uri() . '/js/he.js'); wp_enqueue_script('donateParsleyHeJs'); wp_register_script('donateParsleyJs', get_template_directory_uri() . '/js/parsley.min.js', array('jquery'),'1.11.1'); wp_enqueue_script('donateParsleyJs'); wp_register_script('donateJs', get_template_directory_uri() . '/js/donateJs.js', array('jquery'),'1.11.1'); wp_enqueue_script('donateJs'); } } } function donate_adding_styles() { if (is_singular()) { global $post; if($post->ID=='8436'){ // only for post Id = 8436 wp_register_style('donateStyle', get_template_directory_uri() . '/donateStyle.css'); wp_enqueue_style('donateStyle'); } } } add_action( 'wp_enqueue_scripts', 'donate_adding_scripts' ); add_action( 'wp_enqueue_scripts', 'donate_adding_styles' ); 

ВНИМАНИЕ: (после тщательной проверки других параметров)

  • это только worx с is_singular() -! is_single()

  • условное if($post->ID=='34') только worx внутри этих функций & не так, как я сначала попытался function loadDonateScripts()

  • стилям нужен wp_register_style & wp_enqueue_styleНЕ wp_enqueue_script & wp_register_script поскольку некоторые сообщения могут упоминать !!!

  • add_action должен вызываться функциями, добавляющими сами скрипты и НЕ на вызывающую их функцию (например, function loadDonateScripts() )

  • используя get_template_directory_uri() когда вы регистрируете скрипты worx для обоих JS и CSS, если у вас есть правильный путь

Если вам нужно проверить пути, настройте настраиваемый пост:

 <?php /* * Template Name: GetPath * Description: checking for current theme path. */ global $post; print_r($post->ID); print_r('<br />'); print_r( get_stylesheet_directory_uri()); print_r('<br />'); print_r( get_template_directory_uri()); 

Создайте новую страницу с Page Template - GetPath в режиме предварительного просмотра и просто откройте ее в своем браузере:

 http://YOURWEBSITE_URL/?page_id=####&preview=true 

Ты получишь:

 #### *(post ID num) http://YOURWEBSITE_URL/wp-content/themes/YOUR_THEME_FOLDER_NAME http://YOURWEBSITE_URL/wp-content/themes/YOUR_THEME_FOLDER_NAME