如何在我的WordPress插件中包含CSS和jQuery?


Answers:


78

对于样式 wp_register_style( 'namespace', 'http://locationofcss.com/mycss.css' );

然后使用:wp_enqueue_style('namespace');无论您要加载CSS的位置。

脚本如上所述,但是更快的加载jquery的方法是对要加载的页面使用init中加载的enqueue: wp_enqueue_script('jquery');

当然,除非您想将Google存储库用于jquery。

您还可以有条件地加载脚本所依赖的jquery库:

wp_enqueue_script('namespaceformyscript', 'http://locationofscript.com/myscript.js', array('jquery'));

2017年9月更新

我刚才写了这个答案。我应该澄清,使脚本和样式入队的最佳位置是在wp_enqueue_scripts钩子内。因此,例如:

add_action('wp_enqueue_scripts', 'callback_for_setting_up_scripts');
function callback_for_setting_up_scripts() {
    wp_register_style( 'namespace', 'http://locationofcss.com/mycss.css' );
    wp_enqueue_style( 'namespace' );
    wp_enqueue_script( 'namespaceformyscript', 'http://locationofscript.com/myscript.js', array( 'jquery' ) );
}

wp_enqueue_scripts操作将为“前端”做好准备。您可以将admin_enqueue_scripts操作用于后端(在wp-admin中的任何位置),并将login_enqueue_scripts操作用于登录页面。


对于我们这些刚接触插件开发的人来说,您能否澄清一下“您想将CSS加载到哪里?” 我们是否需要为要调用此页面的每个页面创建页面模板,然后在页眉中手动调用它?
user658182 2014年

@ user658182 use add_action('init', 'function_name');,其中function_name是使资源入队的函数。
瑞安·泰勒

1
仅在特定插件上时,如何才能使样式表起作用?
Farhad 2014年

请您向我们提供与实现该目标的新方式相关的良好文档的任何链接吗?谢谢
HanniBaL90 '17

入队命令后,我必须重新初始化某些内容吗?还是只是重新加载页面?
Giannis Tzagarakis

57

将其放在init()您插件的函数中。

function your_namespace() {
    wp_register_style('your_namespace', plugins_url('style.css',__FILE__ ));
    wp_enqueue_style('your_namespace');
    wp_register_script( 'your_namespace', plugins_url('your_script.js',__FILE__ ));
    wp_enqueue_script('your_namespace');
}

add_action( 'admin_init','your_namespace');

我花了一些时间才找到(对我来说)最好的解决方案,即万无一失的恕我直言。

干杯


该代码在哪里?functions.php?Plugin.php?
user658182 2014年

1
@ user658182,您的wordpress插件可能应该在wp-content / plugins /中具有其自己的.php文件或文件夹。–
Ryan Taylor

22

要在插件中包含CSS和jQuery很容易,请尝试以下操作:

// register jquery and style on initialization
add_action('init', 'register_script');
function register_script() {
    wp_register_script( 'custom_jquery', plugins_url('/js/custom-jquery.js', __FILE__), array('jquery'), '2.5.1' );

    wp_register_style( 'new_style', plugins_url('/css/new-style.css', __FILE__), false, '1.0.0', 'all');
}

// use the registered jquery and style above
add_action('wp_enqueue_scripts', 'enqueue_style');

function enqueue_style(){
   wp_enqueue_script('custom_jquery');

   wp_enqueue_style( 'new_style' );
}

我从这个网站上发现了一个很棒的片段,如何在WordPress中包含jQuery和CSS – WordPress方式

希望能有所帮助。


9

接受的答案不完整。您应该使用正确的钩子:wp_enqueue_scripts

例:

    function add_my_css_and_my_js_files(){
        wp_enqueue_script('your-script-name', $this->urlpath  . '/your-script-filename.js', array('jquery'), '1.2.3', true);
        wp_enqueue_style( 'your-stylesheet-name', plugins_url('/css/new-style.css', __FILE__), false, '1.0.0', 'all');
    }
    add_action('wp_enqueue_scripts', "add_my_css_and_my_js_files");


7

只是附加到@pixeline的答案(试图添加一个简单的注释,但该网站说我需要50声誉)。

如果要为管理部分编写插件,则应使用:

add_action('admin_enqueue_scripts', "add_my_css_and_my_js_files");

admin_enqueueu_scripts是admin部分的正确钩子,前端使用wp_enqueue_scripts。


5

首先,您需要使用wp_register_script()和wp_register_style()函数注册样式和CSS。

 //registering javascript and css
 wp_register_script ( 'mysample', plugins_url ( 'js/myjs.js', __FILE__ ) );
 wp_register_style ( 'mysample', plugins_url ( 'css/mystyle.css', __FILE__ ) );

之后,您可以调用wp_enqueue_script()和wp_enqueue_style()函数以在所需页面中加载js和css

wp_enqueue_script('mysample');
wp_enqueue_style('mysample');

我在这里找到了一个很好的例子http://wiki.workassis.com/wordpress-create-advanced-custom-plugin-using-oop/


3

很简单的:

前端添加JS / CSS :

function enqueue_related_pages_scripts_and_styles(){
        wp_enqueue_style('related-styles', plugins_url('/css/bootstrap.min.css', __FILE__));
        wp_enqueue_script('releated-script', plugins_url( '/js/custom.js' , __FILE__ ), array('jquery','jquery-ui-droppable','jquery-ui-draggable', 'jquery-ui-sortable'));
    }
add_action('wp_enqueue_scripts','enqueue_related_pages_scripts_and_styles');

在WP管理区域中添加JS / CSS :

function enqueue_related_pages_scripts_and_styles(){
        wp_enqueue_style('related-pages-admin-styles',  get_stylesheet_directory_uri() . '/admin-related-pages-styles.css');
        wp_enqueue_script('releated-pages-admin-script', plugins_url( '/js/custom.js' , __FILE__ ), array('jquery','jquery-ui-droppable','jquery-ui-draggable', 'jquery-ui-sortable'));
    }
add_action('admin_enqueue_scripts','enqueue_related_pages_scripts_and_styles');

1

您可以使用以下函数从插件中加入脚本或样式。

function my_enqueued_assets() {
    wp_enqueue_script('my-js-file', plugin_dir_url(__FILE__) . '/js/script.js', '', time());
    wp_enqueue_style('my-css-file', plugin_dir_url(__FILE__) . '/css/style.css', '', time());
}
add_action('wp_enqueue_scripts', 'my_enqueued_assets');

0

您可以使用以下代码在后端和前端添加脚本和CSS:这是简单的类,并且函数以面向对象的方式调用。

class AtiBlogTest {
function register(){
    //for backend
    add_action( 'admin_enqueue_scripts', array($this,'backendEnqueue'));
    //for frontend
    add_action( 'wp_enqueue_scripts', array($this,'frontendEnqueue'));
}
function backendEnqueue(){
    wp_enqueue_style( 'AtiBlogTestStyle', plugins_url( '/assets/css/admin_mystyle.css', __FILE__ ));
    wp_enqueue_script( 'AtiBlogTestScript', plugins_url( '/assets/js/admin_myscript.js', __FILE__ ));
}
function frontendEnqueue(){
    wp_enqueue_style( 'AtiBlogTestStyle', plugins_url( '/assets/css/front_mystyle.css', __FILE__ ));
    wp_enqueue_script( 'AtiBlogTestScript', plugins_url( '/assets/js/front_myscript.js', __FILE__ ));
}
}

if(class_exists('AtiBlogTest')){
$atiblogtest=new AtiBlogTest();
$atiblogtest->register();
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.