自定义帖子,每个帖子加载脚本

时间:2015-05-20 作者:Jadeye

我读了很多问答;就像这里一样。。。(还有其他地方,但不算……哈哈)我想我遵守WP的规则。org,但它仍然不加载脚本。

场景:Php中帖子的自定义模板:

<?php
/*
 * Template Name: YYY
 * Description: Form for YYY donation. 
 * NO FOOTER
 */
get_header(); ?>
<div id="content-yyy">
主题功能。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\');
由于我正在为parsleyjs使用setLocal

<script type="text/javascript">
  window.ParsleyValidator.setLocale(\'he\');
</script>
我有几个问题:

新增功能。php不加载CSS,JS脚本只在我添加$in_footer=true 至功能。php文件和get_footer(); 对于php模板,我只想为特定的自定义帖子(ID=8436)加载这些内容function loadDonateScripts()我希望加载脚本(显然…duh),最好是在页脚。。。有什么想法吗??

2 个回复
SO网友:czerspalace

如果完全删除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\');

SO网友:Jadeye

感谢所有努力从函数中运行自定义脚本的人。php,下面介绍如何:

  • WP v4.1.2custom template postparsleyjs.js, he.js (i18n), custom_JsScript.jsCSS on a separate filea specific post

    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\' );  
    
ATTENTION: (仔细检查其他选项后)

  • 它只与is_singular() - !is_single()

    有条件的if($post->ID==\'34\') 仅限这些函数中的worx;不像我刚进去时试的那样function loadDonateScripts()

    样式需要wp_register_style &;wp_enqueue_style - NOT wp_enqueue_script &;wp_register_script 正如一些帖子可能提到的!!!

  • add_action 必须在添加脚本本身的函数上调用,而不是在调用脚本的函数上调用(例如。function loadDonateScripts())

    使用get_template_directory_uri() 同时为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
    

结束

相关推荐

如何使用wp_en队列脚本来添加JavaScript文件?

我制作了一个非常简单的JavaScript脚本。有1个.js 包含大量代码的文件,HTML文件中只有2行。当我在普通HTML页面上测试脚本时,它工作得很好,但当我用WordPress尝试它时,它不工作。我想这与通向外部的路径有关.js 文件(src=\"js/file.js\").我错过了什么?为什么我的脚本加载不正确?编辑:请参见下面的注释,我现在已将代码添加到functions.php, 但仍然不起作用。Edit2:这是我在functions.php:add_action( \'wp_enqueue_