Widget javascript + css dosyaları yalnızca kullanılırsa nasıl yüklenir?


13

Widget'ım tarafından kullanılan javascript ve css stillerini kendi dosyalarında tutmak istiyorum (ve temaya eklemiyorum).

Ancak widget aslında bir kenar çubuğunda kullanıldığında bunları eklemek için wordpress alamıyorum.

Bunu denedim:

Sınıf bildirimi içinde 2 işlev ekledim

class EssentielleRubriquesPosts extends WP_Widget {

function addFrontendCss(){
    wp_enqueue_style('erw-frontend-css', ESSENTIELLE_RUBRIQUE_WIDGET_PLUGIN_PATH . 'css/EssentielleRubriqueWidget-frontend.css');
}
function addFrontendJavascript(){
    wp_register_script('jq-hoverintent', PLUGIN_PATH . 'js/jquery.hoverintent.js', array('jquery'), '1.0',true);
    wp_enqueue_script('jq-hoverintent');
    wp_enqueue_script('jq-tools', PLUGIN_PATH . 'js/jquery.tools.js', array('jquery'),'1.0',true);
    wp_enqueue_script('erw-frontend-js', PLUGIN_PATH . 'js/widget-frontend.js', array('jquery', 'jq-hoverintent', 'jq-tools'),'1.0',true);

}

ve widget () işlevinin içinde:

function widget($args, $instance) {
        add_action( 'wp_print_scripts', 'addFrontendJavascript' );
        add_action( 'wp_print_styles', 'addFrontendCss' );
}

Ama bu hiçbir şey yapmıyor ...


Yanıtlar:



5

En iyi çözüm önce varlıklarınızı kaydettirmek ve daha sonra widget()WP_Widget'ınızın işlevi içinde CSS ve JS'yi sıralamaktır (yeni kancalar ekleyerek değil, doğrudan sıralayın).

Bu çözümü test ettim ve geçerli WordPress sürümünde (4.5.3) çalışıyor - hem JS hem de CSS sayfa altbilgisine ekleniyor.

<?php
// Register your assets during `wp_enqueue_scripts` hook.
function custom_register_scripts() {
    wp_register_style('erw-frontend-css', '...frontend.css');
    wp_register_script('jq-hoverintent', '...hoverintent.js', ...);
    wp_register_script('jq-tools', '...tools.js', ...);
}
// Use wp_enqueue_scripts hook
add_action('wp_enqueue_scripts', 'custom_register_scripts');


class YourWidget extends WP_Widget {
    public function __construct() {
    }

    public function widget( $args, $instance ) {
        // Enqueue needed assets inside the `widget` function.
        wp_enqueue_style('erw-frontend-css');
        wp_enqueue_script('jq-hoverintent');
        wp_enqueue_script('jq-tools');

        // Output widget contents.
    }

    public function form( $instance ) {
    }

    public function update( $new_instance, $old_instance ) {
    }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.