web-dev-qa-db-ja.com

Wp_enqueue_styleが正しく呼び出されていないことに注意してください。 

私が依存しているプラ​​グインの1つが原因で、このエラーが発生します。

Notice:wp_enqueue_styleが誤って呼び出されました。スクリプトとスタイルは、wp_enqueue_scripts、admin_enqueue_scripts、またはinitがフックされるまで登録またはキューに入れないでください。

このエラーはどういう意味ですか、どのように修正しますか?これは重大なエラーではないことに注意してください。 WPをデバッグモードにしたときにのみ表示されます。

完全なプラグインコードは以下の通りです。

それは非常に複雑で階層的な猫を扱うことを簡単にするプラグインの1つの一体です。投稿していません ちょうど bloddyエラーが発生した場合のデバッグの目的で/それが誰かに役立つことを願います。

<?php /*

**************************************************************************

Plugin Name:  Category Collapse
Description:  Makes children categories hidden on the Write screens until an icon is clicked.
Version:      2009.02.12
Author:       Viper007Bond
Author URI:   http://www.viper007bond.com/

**************************************************************************/

class CategoryCollapse {

    // Plugin initialization
    function CategoryCollapse() {
        if ( !is_admin() ) return;

        wp_enqueue_style( 'category-collapse', plugins_url('/category-collapse/category-collapse.css'), array(), '2009.02.12', 'screen' );
        add_action( 'admin_head', array(&$this, 'edit_form_advanced') );
    }


    // Output the Javascript (it's not in an external file due to the dynamic image URLs)
    function edit_form_advanced() { ?>
<script type="text/javascript">
/* <![CDATA[ */
    jQuery(document).ready(function($){
        $("#categorychecklist li").addClass("catcolpadding");
        $("#categorychecklist ul.children").hide().parent("li").removeClass("catcolpadding").addClass("cathaschildren catcollapsed").prepend('<img class="catcoltoggler" src="<?php echo plugins_url('/category-collapse/images/plus.gif'); ?>" alt="+" title="Show Children" />');
        $("#categorychecklist .catcoltoggler").click(function(){
            var parent = $(this).parent("li.cathaschildren");
            if ( parent.hasClass("catcollapsed") ) {
                $(this).attr({ src: "<?php echo plugins_url('/category-collapse/images/minus.gif'); ?>", alt: "-", title: "Hide Children" });
                parent.removeClass("catcollapsed").addClass("catuncollapsed").children("ul.children").slideDown();
            } else {
                $(this).attr({ src: "<?php echo plugins_url('/category-collapse/images/plus.gif'); ?>", alt: "+", title: "Show Children" });
                parent.removeClass("catuncollapsed").addClass("catcollapsed").children("ul.children").slideUp();
            }
        });
        $(".cat-checklist li").addClass("catcolpadding");
        $(".cat-checklist ul.children").hide().parent("li").removeClass("catcolpadding").addClass("cathaschildren catcollapsed").prepend('<img class="catcoltoggler" src="<?php echo plugins_url('/category-collapse/images/plus.gif'); ?>" alt="+" title="Show Children" />');
        $(".cat-checklist .catcoltoggler").click(function(){
            var parent = $(this).parent("li.cathaschildren");
            if ( parent.hasClass("catcollapsed") ) {
                $(this).attr({ src: "<?php echo plugins_url('/category-collapse/images/minus.gif'); ?>", alt: "-", title: "Hide Children" });
                parent.removeClass("catcollapsed").addClass("catuncollapsed").children("ul.children").slideDown();
            } else {
                $(this).attr({ src: "<?php echo plugins_url('/category-collapse/images/plus.gif'); ?>", alt: "+", title: "Show Children" });
                parent.removeClass("catuncollapsed").addClass("catcollapsed").children("ul.children").slideUp();
            }
        });
    });
/* ]]> */
</script>
<?php
    }
}

// Start this plugin once all other plugins are fully loaded
add_action( 'plugins_loaded', create_function( '', 'global $CategoryCollapse; $CategoryCollapse = new CategoryCollapse();' ) );

?>
4
Average Joe

問題は、 wp_enqueue_style() 呼び出しがcategory_collapse()クラスのCategoryCollapse()メンバー関数内にあり、CategoryCollapse()クラスがplugins_loadedアクションフックにフックされたコールバックによってインスタンス化されていることです。

これは、wp_enqueue_style()関数が plugins_loadedフックで実行しようとしていることを意味します。これは、beforeinitwp_enqueue_scripts、およびadmin_enqueue_scripts を起動します。

修正するには、これを置き換えます。

wp_enqueue_style( 'category-collapse', plugins_url('/category-collapse/category-collapse.css'), array(), '2009.02.12', 'screen' );

...これとともに:

function wpse49339_enqueue_styles() {
    wp_enqueue_style( 'category-collapse', plugins_url('/category-collapse/category-collapse.css'), array(), '2009.02.12', 'screen' );
}
add_action( 'wp_enqueue_scripts', 'wpse49339_enqueue_styles' );

そのようにして、wp_enqueue_style()呼び出しは、wp_enqueue_scriptsに直接起動するのではなく、plugins_loadedにフックされます。

8
Chip Bennett

//これは動作しバグのないコードです。

<?php /*

**************************************************************************

Plugin Name:  Category Collapse
Description:  Makes children categories hidden on the Write screens until an icon is clicked.
Version:      2009.02.12
Author:       Viper007Bond
Author URI:   http://www.viper007bond.com/

**************************************************************************/

class CategoryCollapse {

    // Plugin initialization
    function CategoryCollapse() {
        if ( !is_admin() ) return;
        //begin modifitication  
        //per bennet's suggestion on http://wordpress.stackexchange.com/questions/49339/notice-that-the-wp-enqueue-style-is-not-being-called-correctly/49344#49344      
        //the following org code is commented out
        //wp_enqueue_style( 'category-collapse', plugins_url('/category-collapse/category-collapse.css'), array(), '2009.02.12', 'screen' );
        //and replaced with this;
        function wpse49339_enqueue_styles() {
            wp_enqueue_style( 'category-collapse', plugins_url('/category-collapse/category-collapse.css'), array(), '2009.02.12', 'screen' );
        }
        add_action( 'wp_enqueue_scripts', 'wpse49339_enqueue_styles' );
        //end modification  
        add_action( 'admin_head', array(&$this, 'edit_form_advanced') );
    }


    // Output the Javascript (it's not in an external file due to the dynamic image URLs)
    function edit_form_advanced() { ?>
<script type="text/javascript">
/* <![CDATA[ */
    jQuery(document).ready(function($){
        $("#categorychecklist li").addClass("catcolpadding");
        $("#categorychecklist ul.children").hide().parent("li").removeClass("catcolpadding").addClass("cathaschildren catcollapsed").prepend('<img class="catcoltoggler" src="<?php echo plugins_url('/category-collapse/images/plus.gif'); ?>" alt="+" title="Show Children" />');
        $("#categorychecklist .catcoltoggler").click(function(){
            var parent = $(this).parent("li.cathaschildren");
            if ( parent.hasClass("catcollapsed") ) {
                $(this).attr({ src: "<?php echo plugins_url('/category-collapse/images/minus.gif'); ?>", alt: "-", title: "Hide Children" });
                parent.removeClass("catcollapsed").addClass("catuncollapsed").children("ul.children").slideDown();
            } else {
                $(this).attr({ src: "<?php echo plugins_url('/category-collapse/images/plus.gif'); ?>", alt: "+", title: "Show Children" });
                parent.removeClass("catuncollapsed").addClass("catcollapsed").children("ul.children").slideUp();
            }
        });
        $(".cat-checklist li").addClass("catcolpadding");
        $(".cat-checklist ul.children").hide().parent("li").removeClass("catcolpadding").addClass("cathaschildren catcollapsed").prepend('<img class="catcoltoggler" src="<?php echo plugins_url('/category-collapse/images/plus.gif'); ?>" alt="+" title="Show Children" />');
        $(".cat-checklist .catcoltoggler").click(function(){
            var parent = $(this).parent("li.cathaschildren");
            if ( parent.hasClass("catcollapsed") ) {
                $(this).attr({ src: "<?php echo plugins_url('/category-collapse/images/minus.gif'); ?>", alt: "-", title: "Hide Children" });
                parent.removeClass("catcollapsed").addClass("catuncollapsed").children("ul.children").slideDown();
            } else {
                $(this).attr({ src: "<?php echo plugins_url('/category-collapse/images/plus.gif'); ?>", alt: "+", title: "Show Children" });
                parent.removeClass("catuncollapsed").addClass("catcollapsed").children("ul.children").slideUp();
            }
        });
    });
/* ]]> */
</script>
<?php
    }
}

// Start this plugin once all other plugins are fully loaded
add_action( 'plugins_loaded', create_function( '', 'global $CategoryCollapse; $CategoryCollapse = new CategoryCollapse();' ) );

?>
0
Average Joe