WP_ENQUEUE未与Foundation 5配合使用

时间:2014-06-05 作者:FlannelBeard

我最近开始将Foundation 5.2.3集成到Wordpress 3.9中,我在通过wp\\U排队初始化jquery时遇到了问题。不过,这些样式的加载效果很好。

可以找到一个我正在努力实现的工作示例here (header.php和footer.php中的样式和脚本)

功能。php

// Enqueue scripts
require_once(\'library/enqueue-scripts.php\');
现在在我的排队脚本中。php

<?php

// wp_enqueue foundation_styles
function foundation_styles() {

  // wp_enqueue style, as you do not need to register style links. 
  wp_enqueue_style( \'reset\', get_template_directory_uri() . \'/style.css\' );
  wp_enqueue_style( \'foundation\', get_template_directory_uri() . \'/css/foundation.css\' );
  wp_enqueue_style( \'icons\', get_template_directory_uri() . \'/font-files/font-icons/foundation-icons.css\' );
  wp_enqueue_style( \'nprogress\', get_template_directory_uri() . \'/css/nprogress/nprogress.css\' );
  wp_enqueue_style( \'override\', get_template_directory_uri() . \'/css/project.override.css\' );

}

// wp_enqueue foundation_scripts
function foundation_scripts() {

  // wp_enqueue jqeury 
  wp_enqueue_script(\'jquery\');

  // wp_enqueue scripts 
  wp_enqueue_script( \'modernizer\', get_template_directory_uri() . \'/js/modernizr-2.5.3.js\',null,null, false );
  wp_enqueue_script( \'scrollreveal\', get_template_directory_uri() . \'/js/foundation/foundation.scrollReveal.js\',null,null, false );
  wp_enqueue_script( \'jquery110\', get_template_directory_uri() . \'/js/vendor/jquery-1.10.js\',null,null, true );
  wp_enqueue_script( \'nprogress\', get_template_directory_uri() . \'/js/foundation/foundation.nprogress.js\',null,null, true );
  wp_enqueue_script( \'foundationmin\', get_template_directory_uri() . \'/js/foundation/foundation.min.js\',null,null, true );
  wp_enqueue_script( \'foundationscripts\', get_template_directory_uri() . \'/js/foundation/foundation.scripts.js\',null,null, true );

}

add_action( \'wp_enqueue_scripts\', \'foundation_styles\' );
add_action( \'wp_enqueue_scripts\', \'foundation_scripts\' );

?>
我有自己的自定义脚本文件/js/foundation/foundation。脚本。js通过以下方式初始化foundation:

jQuery(document).foundation(($);
在我的标题中。php我有我的标题函数、基本元和wp_head. 我真的不明白为什么我的jquery没有加载。

旁注:jquery 1.10仅用于帮助nprogress。js工作。

2 个回复
最合适的回答,由SO网友:FlannelBeard 整理而成

EDIT: 我回来纠正这篇帖子,已经成功地将Wordpress 3.9网站的wp\\U Foundation 5.3排队。以下代码用于anyone 他一直在努力建立基金会。下面的代码工作正常。

UPDATES: 我将继续用最新版本的Wordpress和Foundation更新这篇文章,为您提供最好的WP\\U排队代码:)欢迎!

Foundation 5.3 for Sites

以下代码已于2014年6月24日更新

add_action(\'init\', \'styleEnqueue\');
add_action(\'init\', \'foundationEnqueue\');

// ----------------------------------------------------------------------------
// register and enqueue styles
// ----------------------------------------------------------------------------

function styleEnqueue() {
  if (!is_admin()) {

// enqueue theme styles
wp_enqueue_style(\'css\', get_template_directory_uri()."/css/YOUR_STYLESHEET_FILE_PATH_HERE_FROM_ROOT",array(),\'\',\'screen\');
// enqueue foundation.min
wp_enqueue_style(\'css\', get_template_directory_uri()."/css/foundation.min.css",array(),\'5.1.1\',\'screen\');
// enqueue font icons
wp_enqueue_style(\'icons\', get_template_directory_uri()."/css/foundation-icons.css",array(),\'5.1.1\',\'screen\');
  }
}

// ----------------------------------------------------------------------------
// register and enqueue scripts
// ----------------------------------------------------------------------------

function foundationEnqueue() {
  if (!is_admin()) {

// deregister core jquery
wp_deregister_script(\'jquery\');
// reregister jquery 2.1.0
wp_register_script(\'jquery\', get_template_directory_uri()."/js/vendor/jquery.js", array(),\'2.1.0\',false);
// register modernizr
wp_register_script(\'modernizer\', get_template_directory_uri()."/js/vendor/modernizr.js",array(jquery),\'2.1.0\', false);
// register foundation.min
wp_register_script(\'foundation\', get_template_directory_uri()."/js/foundation.min.js", array(\'jquery\'),\'2.1.0\',true); 
// register YOUR_JS_FILE_HERE
wp_register_script(\'customjs\', get_template_directory_uri()."/js/YOUR_JS_FILE_HERE.js", array(\'jquery\'),\'2.1.0\',true);

wp_enqueue_script(array(\'jquery\',\'modernizer\',\'foundation\',\'customjs\'));

  }
}

SO网友:Pieter Goosen

这里有几个问题,还有其他一些我会做得不太好的事情。

让我们从wp_enqueue_style(). 这里的第一个参数是$handle

$handle

(字符串)(必需)用作样式表句柄的名称。作为特例,如果字符串包含“?”字符,字符串的前一部分引用已注册的句柄,后一部分作为查询字符串附加到URL。

正如您在这里看到的,这个参数只接受字符串,而不是数组。所以这行不通

wp_enqueue_style(array(
      \'reset\',\'foundation\',\'foundation-icons\',\'project.override\',\'nprogress\')
  );
也不需要先注册样式表,然后再将其排入队列。您只需将样式表排队即可。原因是您没有多次有条件地将样式表排入队列。因此,您只需执行以下操作

 wp_enqueueu_style( \'foundation\', get_template_directory_uri() . \'/css/foundation.css\' );
您还应使用:get_template_directory_uri() 而不是get_stylesheet_uri()

现在,这同样适用于wp_enqueue_script(). 还有$handle 参数不接受数组。

但这里的重要参数是$in_footer

$in_footer

(布尔)(可选)通常,脚本放置在HTML文档的中。如果此参数为true,则脚本将放置在结束标记之前。这要求主题在适当的位置具有wp\\u footer()模板标记。

默认值:false

如果需要在页脚中加载脚本,则应将此参数设置为true

要继续,同样的条件将适用于wp_enqueue_script() 至于wp_enqueue_style() 考虑到您不需要注册和排队,您只需排队即可,使用get_template_directory_uri().

所以您可以这样做,将您的脚本排队

 wp_enqueue_script( \'scrollReveal\', get_template_directory_uri() . \'/js/foundation/foundation.scrollReveal.js\',array(),false, false );

结束