web-dev-qa-db-de.com

Beachten Sie, dass der wp_enqueue_style nicht korrekt aufgerufen wird! 

Ich erhalte diesen Fehler aufgrund eines der Plugins, auf die ich mich verlasse.

Hinweis: wp_enqueue_style wurde falsch aufgerufen. Skripte und Stile sollten erst registriert oder in die Warteschlange gestellt werden, wenn sich die Hooks wp_enqueue_scripts, admin_enqueue_scripts oder init befinden.

Was bedeutet dieser Fehler und wie können Sie ihn beheben? Bedenken Sie, dass dies kein kritischer Fehler ist. Es erscheint nur, wenn ich WP in den Debug-Modus versetze.

Der vollständige Plugin-Code ist unten.

Es ist ein Wahnsinns-Plug-In, mit dem es ein Kinderspiel ist, sich mit den hochkomplizierten und hierarchischen Katzen auseinanderzusetzen. Ich poste es nicht nur um zu debuggen, wo der blöde Fehler ist, sondern auch um zu hoffen, dass es jemandem hilft.

<?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

Das Problem besteht darin, dass sich der Aufruf wp_enqueue_style() innerhalb der Memberfunktion category_collapse() der Klasse CategoryCollapse() befindet und die Klasse CategoryCollapse() durch einen Rückruf instanziiert wird, der mit dem Aktions-Hook plugins_loaded verknüpft ist.

Das bedeutet, dass die Funktion wp_enqueue_style() versucht, am Hook plugins_loaded AUSZUFÜHREN, DER VOR init, wp_enqueue_scripts UND admin_enqueue_scripts auslöst.

Um dies zu beheben, ersetzen Sie diese:

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

...mit diesem:

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

Auf diese Weise wird der wp_enqueue_style()-Aufruf in wp_enqueue_scripts eingebunden, anstatt direkt auf plugins_loaded zu feuern.

8
Chip Bennett

// hier ist der funktionierende und fehlerfreie Code

<?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