Wp_head()在模板重定向后不包括样式和Java脚本

时间:2012-09-23 作者:Extrakun

我使用template\\u redirect操作将用户重定向到没有页眉、边栏或页脚的自定义模板(目的是将其作为对话框放在iframe中)。在我完成重定向之后,我似乎无法列出所有排队的JS和CSS。

代码如下:

    <?php
    /**
     * This theme file is accessed by template redirect
     * No header, sidebar or footer
     */

    ?>
    <!DOCTYPE html>
    <head>
    <title>Customize Product</title>

    <?php wp_head()?>
    </head>
    <body>
    <div id="container">
                <div id="content" role="main">

                <?php
                /**
                 * Output the content of the template 
                 */
                do_action(\'product_customize_display_customization_content\');
                ?>

                </div><!-- #content -->
            </div><!-- #container -->

    </body>
编辑:下面是我如何包括JS

// bootstrap code, will refactor later as necessary
if (is_admin())
{
    global $admin_class;
    $admin_class = new product_customize_admin();
    $admin_class->init_admin_actions();
    $admin_class->init_ajax_actions();

    add_action(\'admin_menu\', \'init_admin_menu\');
    add_action(\'admin_print_scripts\', \'my_admin_scripts\');
    add_action(\'admin_print_styles\', \'my_admin_styles\');


}
else
{
    add_action(\'wp_head\', \'include_frontend_scripts\');


    // setup frontend
    global $frontend_class;
    $frontend_class = new product_customize();


}

function include_frontend_scripts()
{   


    // preset scripts
    wp_register_script(\'product-customize-preset\', plugin_dir_url(__FILE__).\'js/preset.js\');
    wp_enqueue_script(\'product-customize-preset\');
}
下面是模板重定向的代码

function theme_redirect()
{
    global $wp;
    $plugin_dir = dirname(__FILE__);

    //echo \'<pre>\'.print_r($_GET, true).\'</pre>\';

    // if we are doing product customization
    if ($_GET[\'prod_cust_do_customize\'] == 1)
    {
        $return_template = $plugin_dir.\'/themefiles/customize_preset_page.php\';
        echo "template = $return_template";
        $this->do_theme_redirect($return_template);

    }

}

function do_theme_redirect($url)
{
    include ($url);
    exit();
}

2 个回复
SO网友:Tomas Buteler

如果CSS没有在wp\\U头内输出,这可能意味着它们没有正确排队。看见here 了解更多信息。也许它们是在主题文件中硬编码的?在里面header.php?

至于脚本,我的猜测是,它们正在排队,并设置为在页脚操作期间触发,因此您没有调用wp_footer() 意味着这些行动永远不会开火。

如果无法编辑footer.php 模板文件删除所有不必要的输出,同时仍保留wp_footer() 然后,至少手动触发常规操作,如:

// ...
        </div><!-- #content -->
    </div><!-- #container -->

<?php do_action(\'wp_print_footer_scripts\'); ?>

</body>
很难说这是否可行,因为这可能取决于脚本的排队方式,而且插件之间的差异很大(特别是如果最初的编码器不遵循WP编码标准),但希望它能引导您朝着正确的方向前进。

编辑:

如果需要向脚本(如jQuery)添加依赖项,以确保这些DEP在您自己的DEP之前排队并加载,请执行以下操作:

wp_register_script(\'product-customize-preset\', plugin_dir_url(__FILE__).\'js/preset.js\', array(\'jquery\'));

SO网友:zedjasper

确保你有wp_footer() 添加到您的footer.php 文件

结束

相关推荐