我使用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();
}
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\'));