0
votes

I created two plugins for Wordpress. Both plugins have different scripts and stylesheets. To load this scripts I use this method:

class load_scripts{

    function register_market(){
            add_action( 'admin_enqueue_scripts', array($this, 'enqueue_admin_market') );
    }

    function enqueue_admin_market(){
            wp_enqueue_style( 'pluginstyle', plugins_url( '/assets/backend-style.css', __FILE__ ) );
            wp_enqueue_script( 'pluginscript', plugins_url( '/assets/backend-script.js', __FILE__ ) );
            wp_enqueue_media();
    }
}
if( class_exists( 'load_scripts')){
$load_scripts = new load_scripts();
$load_scripts->register_market();
}

Of course I used different function and class names.

Now the problem is if both plugins are activated the scripts are loaded from only one plugin.

I tried to do this, but does not work:

add_action( 'admin_enqueue_scripts', array($this, 'enqueue_admin_market'), 0 );

What can I do to solve this conflict?

1

1 Answers

0
votes

Your issue lies on these two lines:

wp_enqueue_style( 'pluginstyle', plugins_url( '/assets/backend-style.css', __FILE__ ) );
wp_enqueue_script( 'pluginscript', plugins_url( '/assets/backend-script.js', __FILE__ ) );

Namely, you probably have 'pluginstyle' and 'pluginscript' as the handles in both your plugins. The $handle parameter should be unique in accordance with the wp_enqueue_style() and wp_enqueue_script() function references. For example:

Plugin 1:

function enqueue_admin_market(){
    wp_enqueue_style( 'pluginstyle-1', plugins_url( '/assets/backend-style.css', __FILE__ ) );
    wp_enqueue_script( 'pluginscript-1', plugins_url( '/assets/backend-script.js', __FILE__ ) );
    wp_enqueue_media();
}

Plugin 2:

function enqueue_admin_market(){
    wp_enqueue_style( 'pluginstyle-2', plugins_url( '/assets/backend-style.css', __FILE__ ) );
    wp_enqueue_script( 'pluginscript-2', plugins_url( '/assets/backend-script.js', __FILE__ ) );
    wp_enqueue_media();
}