首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何基于模板部件对脚本进行排队?

如何基于模板部件对脚本进行排队?
EN

Stack Overflow用户
提问于 2015-02-04 22:03:41
回答 2查看 2.7K关注 0票数 3

我希望能够基于wordpress获取模板部分在头和脚加载脚本和样式表。

在我的前端-page.php中有以下代码:

代码语言:javascript
复制
<?php 
/*
Template Name: Home Page
*/

get_header();

$loop = new WP_Query( array( 'post_type' => 'home_page','posts_per_page'=>1, 'orderby' => 'menu_order', 'order' => 'DESC') ); 
while ( $loop->have_posts() ) : $loop->the_post(); 

if( get_field('home_page_template_type') == 'Bookcase') {

    get_template_part( 'bookcase' ); 

}elseif (get_field('home_page_template_type') == 'Bookers') {

    get_template_part('bookers' ); 

}

endwhile;

get_footer();

现在,在我的函数php中,我想这样做

代码语言:javascript
复制
// Register Script
if (!function_exists('theme_scripts')) {
    function villarosa_theme_scripts() {
        global $wp_scripts;

        if ('bookcase.php') {
            // Load our main stylesheet.
            wp_deregister_style( 'bookcase-styles' );
            wp_register_style( 'bookcase-styles',trailingslashit( THEME_URI ) .'bookcase/css/style.css', false, '1.0' );
            wp_enqueue_style( 'bookcase-styles' );

            // jQuery (necessary for Bootstrap's JavaScript plugins) 
            wp_deregister_script( 'jquery' );
            wp_register_script( 'jquery', trailingslashit( THEME_URI ) .'bookcase/js/jquery.js', false, '1.0', true );
            wp_enqueue_script( 'jquery' );

            wp_deregister_script( 'jquery-migrate' );
            wp_register_script( 'jquery-migrate', trailingslashit( THEME_URI ) .'bookcase/js/jquery-migrate-1.2.1.js', false, '1.0', true );
            wp_enqueue_script( 'jquery-migrate' );

            wp_deregister_script( 'jquery-easing' );
            wp_register_script( 'jquery-easing', trailingslashit( THEME_URI ) .'bookcase/js/jquery.easing.1.3.js', false, '1.0', true );
            wp_enqueue_script( 'jquery-easing' );

            wp_deregister_script( 'script' );
            wp_register_script( 'script', trailingslashit( THEME_URI ) .'bookcase/js/script.js', false, '1.0', true );
            wp_enqueue_script( 'script' );

            wp_deregister_script( 'jquery-equalheights' );
            wp_register_script( 'jquery-equalheights', trailingslashit( THEME_URI ) .'bookcase/js/jquery.equalheights.js', false, '1.0', true );
            wp_enqueue_script( 'jquery-equalheights' );

            wp_deregister_script( 'jquery-ui-totop' );
            wp_register_script( 'jquery-ui-totop', trailingslashit( THEME_URI ) .'bookcase/js/jquery.ui.totop.js', false, '1.0', true );
            wp_enqueue_script( 'jquery-ui-totop' );

            wp_deregister_script( 'superfish' );
            wp_register_script( 'superfish', trailingslashit( THEME_URI ) .'bookcase/js/superfish.js', false, '1.0', true );
            wp_enqueue_script( 'superfish' );

            wp_deregister_script( 'jquery-mobilemenu' );
            wp_register_script( 'jquery-mobilemenu', trailingslashit( THEME_URI ) .'bookcase/js/jquery.mobilemenu.js', false, '1.0', true );
            wp_enqueue_script( 'jquery-mobilemenu' );

            wp_deregister_script( 'sForm' );
            wp_register_script( 'sForm', trailingslashit( THEME_URI ) .'bookcase/js/sForm.js', false, '1.0', true );
            wp_enqueue_script( 'sForm' );

        } else if ('bookers.php') {
            // Load our main stylesheet.
            wp_deregister_style( 'bookers-styles' );
            wp_register_style( 'bookers-styles',trailingslashit( THEME_URI ) .'bookers/css/style.css', false, '1.0' );
            wp_enqueue_style( 'bookers-styles' );

            wp_deregister_style( 'stuck' );
            wp_register_style( 'stuck',trailingslashit( THEME_URI ) .'bookers/css/stuck.css', false, '1.0' );
            wp_enqueue_style( 'stuck' );

            // jQuery (necessary for Bootstrap's JavaScript plugins) 
            wp_deregister_script( 'jquery' );
            wp_register_script( 'jquery', trailingslashit( THEME_URI ) .'bookers/js/jquery.js', false, '1.0', true );
            wp_enqueue_script( 'jquery' );

            wp_deregister_script( 'jquery-migrate' );
            wp_register_script( 'jquery-migrate', trailingslashit( THEME_URI ) .'bookers/js/jquery-migrate-1.2.1.js', false, '1.0', true );
            wp_enqueue_script( 'jquery-migrate' );

            wp_deregister_script( 'jquery-easing' );
            wp_register_script( 'jquery-easing', trailingslashit( THEME_URI ) .'bookers/js/jquery.easing.1.3.js', false, '1.0', true );
            wp_enqueue_script( 'jquery-easing' );

            wp_deregister_script( 'script' );
            wp_register_script( 'script', trailingslashit( THEME_URI ) .'bookers/js/script.js', false, '1.0', true );
            wp_enqueue_script( 'script' );

            wp_deregister_script( 'jquery-equalheights' );
            wp_register_script( 'jquery-equalheights', trailingslashit( THEME_URI ) .'bookers/js/jquery.equalheights.js', false, '1.0', true );
            wp_enqueue_script( 'jquery-equalheights' );

            wp_deregister_script( 'jquery-ui-totop' );
            wp_register_script( 'jquery-ui-totop', trailingslashit( THEME_URI ) .'bookers/js/jquery.ui.totop.js', false, '1.0', true );
            wp_enqueue_script( 'jquery-ui-totop' );

            wp_deregister_script( 'superfish' );
            wp_register_script( 'superfish', trailingslashit( THEME_URI ) .'bookers/js/superfish.js', false, '1.0', true );
            wp_enqueue_script( 'superfish' );

            wp_deregister_script( 'tmStickUp' );
            wp_register_script( 'tmStickUp', trailingslashit( THEME_URI ) .'bookers/js/tmStickUp.js', false, '1.0', true );
            wp_enqueue_script( 'tmStickUp' );

            wp_deregister_script( 'jquery-mobilemenu' );
            wp_register_script( 'jquery-mobilemenu', trailingslashit( THEME_URI ) .'bookers/js/jquery.mobilemenu.js', false, '1.0', true );
            wp_enqueue_script( 'jquery-mobilemenu' );
        }
    }
}

但是,脚本是为我的第一个条件加载的,但是如果它们不是呢?为什么是这种情况?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-04 23:29:33

如果您传递一个字符串或变量来测试一些有形的东西。例如,if($var)将等同于if($var != null),因此您的函数不会超越if ('bookcase.php'),因为它始终是正确的(如果存在此文件,则测试它是否为空)。

也许你想要的是:

代码语言:javascript
复制
 function villarosa_theme_scripts($type) {
    if($type==='bookcase'):
       // enqueue scripts
    elseif($type==='bookers':
       // enqueue scripts
    endif;
 }

你可以直接在你的模板上调用它*把这段代码放在你的标题前.

代码语言:javascript
复制
if( get_field('home_page_template_type') == 'Bookcase') {

        get_template_part( 'bookcase' ); 
        villarosa_theme_scripts('bookcase');

}elseif (get_field('home_page_template_type') == 'Bookers') {

        get_template_part('bookers' ); 
        villarosa_theme_scripts('bookers');

}
get_header();
票数 2
EN

Stack Overflow用户

发布于 2015-02-04 23:31:05

我不知道你在哪里打电话给villarosa_theme_scripts,但无论如何:

代码语言:javascript
复制
if ('bookcase.php')

将永远评估为真。您需要测试一些变量(我假设它是一个WordPress模板名),例如:

代码语言:javascript
复制
if ($template == 'bookcase.php')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28332354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档