我正在创建一个主题框架,并使用一个类来启动主题的所有基本功能(添加主题支持、菜单等)。我在尝试将脚本和样式排队时遇到了问题:
我正在使用add_action( \'init\', array(&$this, \'EnqueueScrits\'), 10, 1);
和do_action( \'init\', $enqueued );
使用$enqueued参数调用方法。但是,当我尝试使用相同的技术来添加wp_enqueue_style
$param正在混淆(脚本的$param也用于样式)。
然后,我的解决方案是对第一个add\\u操作创建连锁反应,如下所示:
但是什么都没有发生,动作也没有被调用(不管怎么说,似乎是这样)。有没有人知道更好的解决方案,或者我遗漏了什么?
编辑:这是完整的代码。我的班级:
class Nomade
{
public function __construct($menus, $features, $enqueued, $styled)
{
// Define base constants
define(\'THEME_FRAMEWORK\', \'nomade\');
define(\'NOMADE_VERSION\', \'1.0\');
// Define directories
define(\'NOMADE_DIR\', get_template_directory());
define(\'NOMADE_LIB_DIR\', get_template_directory() . \'/library\');
$this->AddThemeSupport($features);
$this->MenuBuilder($menus);
// Add support for WordPress features
add_action(\'after_setup_theme\', array(__CLASS__, \'MenuBuilder\'));
add_action( \'after_setup_theme\', array(__CLASS__, \'AddThemeSupport\'));
add_action( \'init\', array(&$this, \'EnqueueScrits\'), 10, 1);
do_action( \'init\', $enqueued );
}
public function AddThemeSupport($features)
{
if(is_array($features))
{
foreach ($features as $feature) {
add_theme_support($feature);
}
}
}
public function MenuBuilder($menus)
{
if (is_array($menus)) {
foreach ($menus as $location => $name) {
register_nav_menus(array(
$location => $name
));
}
}
}
public function EnqueueScrits($enqueued)
{
if (is_array($enqueued)) {
foreach ($enqueued as $value) {
wp_enqueue_script( $value["name"], $value["location"], array("jquery"), $value["version"], true );
}
}
}
}
下面是我如何实例化对象(在单独的文件中):<?php
// Depedencies: menu registrer and builder
include(\'application.class.php\');
// Set menus
$menus = array( \'main_menu\' => \'Main Menu\', \'footer_menu\' => \'Footer Menu\', \'side_menu\' => \'Sidebar Menu\' );
// Set theme features
$features = array( \'menus\', \'custom-background\', \'custom-header\', \'post-thumbnail\' );
// Register scripts array
$register = array( \'scripts\' => \'NOMADE_DIR\' . \'/js/scripts.js\' );
// Enqueue scripts array
$enqueued = array(
array("name" => "general", "location" => get_template_directory_uri() . \'/js/general.js\', "version" => 1)
);
$styled = array(
array("name" => "main", "location" => "lac1", "version" => 2, "media" => "all")
);
// Instantiate Nomade (main application)
$Nomade = new Nomade($menus, $features, $enqueued, $styled);
提前谢谢你的帮助