위젯 자바 스크립트 + CSS 파일을 사용하는 경우에만로드하는 방법은 무엇입니까?


13

내 위젯에서 사용하는 자바 스크립트 및 CSS 스타일을 자체 파일 내에 유지하고 테마에 추가하지 않고 싶습니다.

그러나 위젯이 실제로 사이드 바에서 사용될 때 워드 프레스를 추가 할 수 없습니다.

나는 이것을 시도했다 :

클래스 선언 안에 2 개의 함수를 추가했습니다.

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);

}

그리고 widget () 함수 안에서 :

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

그러나 그것은 아무것도하지 않습니다 ...


이 문서
Juan Solano

답변:



5

가장 좋은 해결책은 자산을 먼저 등록한 다음 widget()WP_Widget 함수 안에 CSS와 JS를 대기열에 넣는 것입니다 (새 후크를 추가하지 않고 직접 대기열에 넣는 것).

이 솔루션을 테스트했으며 현재 WordPress 버전 (4.5.3)에서 작동합니다 .JS와 CSS 모두 페이지 바닥 글에 추가됩니다.

<?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 ) {
    }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.