我正在使用以下页面编写一个wordpress小部件 1)我有母版页(master.php) - 是主要的插件页面 - 使用jQuery加载第二页(slave.php) 2)从页面 - 有php,jquery,css等。 - 是一个外部页面
以下是master.php的一部分
<?php
add_action('init', 'register_masterscript');
function register_masterscript() {
wp_register_script( 'master_jquery', plugins_url('/js/master-script.js', __FILE__), array('jquery'), '2.5.1' );
wp_register_script( 'master_jquery2', plugins_url('/js/master.js', __FILE__), array('jquery'), '2.5.1' );
wp_register_style( 'master_style', plugins_url('/css/master_style.css', __FILE__), false, '1.0.0', 'all');
}
// using the registered jquery and style above
add_action('wp_enqueue_scripts', 'enqueue_masterstyle');
function enqueue_masterstyle(){
wp_enqueue_script('master_jquery');
wp_enqueue_script('master_jquery2');
wp_enqueue_style( 'master_style' );
}
?>
master.php成功加载slave.ph但我的问题不是jquery操作或链接工作。 由于slave.php是外部的,我试过
define('WP_USE_THEMES', false);
require('../../../wp-blog-header.php');
然后
<?php
add_action('init', 'register_slavescript');
function register_slavescript() {
wp_register_script( 'slave_jquery', plugins_url('/js/jQuery1.7.1.js', __FILE__), array('jquery'), '2.5.1' );
wp_register_script( 'slave_jquery2', plugins_url('/js/highlight.pack.js', __FILE__), array('jquery'), '2.5.1' );
wp_register_script( 'slave_jquery3', plugins_url('/js/combined.js', __FILE__), array('jquery'), '2.5.1' );
wp_register_style( 'slave_style', plugins_url('/css/slave_style.css', __FILE__), false, '1.0.0', 'all');
wp_register_script( 'slave_jquery4', plugins_url('/js/jquery.mousewheel.js', __FILE__), array('jquery'), '2.5.1' );
wp_register_script( 'slave_jquery5', plugins_url('/js/jquery.jscrollpane.min.js', __FILE__), array('jquery'), '2.5.1' );
}
// use the registered jquery and style above
add_action('wp_enqueue_scripts', 'enqueue_slavestyle');
function enqueue_slavestyle(){
wp_enqueue_script('slave_jquery');
wp_enqueue_script('slave_jquery2');
wp_enqueue_script('slave_jquery3');
wp_enqueue_style( 'slave_style' );
wp_enqueue_script('slave_jquery4');
wp_enqueue_script('slave_jquery5');
}
?>
看起来像slave.php enqueue -ing不能正常工作,我怎么能以正确的方式做到这一点?
答案 0 :(得分:0)
虽然您可以注册脚本和样式而不会出现任何问题,但WordPress不会自动将它们注入页面。
实际执行此操作的函数链附加到几个未在您的情况下触发的操作。
在wp_head
,login_head
或admin_print_scripts
期间输出标题脚本;页脚脚本也会发生类似的事情。
例如,wp_head
挂钩由适当时调用wp_head()
的主题触发。你是奴隶打电话吗?我不认为它是对的。
总的来说,您必须手动调用wp_print_head_scripts
和wp_print_footer_scripts
才能在自定义引导页面上输出排队的脚本和样式。
说到自定义引导:通常使用Widgets和AJAX可以避免自定义引导。因此,如果您发现自己在页面上手动加载WordPress,那么您很可能做错了,特别是如果它涉及iframe。
答案 1 :(得分:0)
关注@ soulseekah的回答,不要忘记在wp_head()
结束标记之前调用</head>
,在wp_footer()
结束标记之前调用</body>
。这些函数通常需要通过插件或主题的特定插入来呈现WordPress脚本和CSS标记 - 通常使用wp_enqueue_scripts()
文件中的wp_enqueue_styles()
或functions.php
排队。
如果您的模板中没有这些功能,您的主题将无法通过unit tests。
检测此类问题的一种好方法是安装Theme Checker插件。这有助于您根据latest WordPress standards跟踪主题的功能。