1

Every serious plugin developer probably has to deal with this problem: WordPress is not supporting composer or any dependency management by default. I have written a great plugin which I would like to put into the official repository on WordPress.org.

Problem is: I do not want to write all of those options pages (including network options pages) on my own - this is why I am using the CMB2 library. It is actually a well known framework used by a lot of WordPress developers in order to create options pages: https://github.com/CMB2/CMB2

Most probably it is not a good idea to put the CMB2 library into my Plugin (which would also require constant updates). But what other option do I have? What is a good way to deal with this problem?

5
  • Have you looked into how WooCommerce extensions make sure that WooCommerce is installed and activated?
    – kero
    Commented Mar 19, 2019 at 17:19
  • Unfortunately there really isn't a good solution for this issue. Either you include the library in your plugin, and then manage the updates to the library on the plugin repo, or you write the code for the meta boxes and options pages yourself. The only other option is if you want people to use the CMB plugin and consider yours an addon for that then you could use if (!class_exists('cmb_main_class_name)){ ... on your plugin init function
    – mrben522
    Commented Mar 19, 2019 at 17:25
  • @mrben522 Already thought about that but for normal users it will be too difficult to install CMB2 themselves (which may even be removed from the repo).
    – Blackbam
    Commented Mar 19, 2019 at 18:28
  • 1
    In that case you're going to have to include the library in your plugin. It's not ideal but it's definitely not uncommon or particularly frowned upon in wordpress plugins.
    – mrben522
    Commented Mar 19, 2019 at 18:40
  • @mrben522 Ok I see - thanks!
    – Blackbam
    Commented Mar 19, 2019 at 18:42

1 Answer 1

2

On your plugin activation hook method you can check if CMB plugin is installed and/or activated.

You can check this using the following methods:

  1. is_plugin_active(): only available from within the admin pages
  2. function_exists() or class_exists(): available anywhere once they are PHP core methods

If CMB is not installed, you can throw an error message in the panel with instructions to the user on how to install it.

This article has a great explanation on how to check WordPress Plugin Dependencies.

4
  • Great article on Plugin dependencies thanks! That might be helpful. Still I hope for some better solution. Otherwise we should think about going to wordpress.org for bothering the core developers with this issue. I know there is still no GOOD solution but ...
    – Blackbam
    Commented Mar 19, 2019 at 18:31
  • 2
    I updated the first link, Codex is deprecated, developer.wordpress.org is the new resource for information about WP core functionality
    – kero
    Commented Mar 19, 2019 at 18:38
  • @CaduDeCastroAlves Maybe you also add one or two sentences on how to handle libraries (as CMB2 was a plugin but now is only a library). mrben522 said it basically in the comments.Then I can accept.
    – Blackbam
    Commented Mar 19, 2019 at 18:43
  • @Blackbam CMB2 is not only a library. It's both available as a plugin AND a library. You've asked for an option. To implement this as a library you can follow the documentation here. It's very clear. Commented Mar 19, 2019 at 19:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.