Support » Plugin: Carbon Fields » Load carbon fields with theme if plugin is not active

  • Hello!

    I’m fairly new to php and wordpress and now I have to finish a theme project started by an actual developer.

    Different blogs will use this new theme, but plugin activation is only available to a category of users. To make it easier, we’re shipping carbon fields along with the theme, which I’ve managed to do by using the documentation and support forums.

    So my question is: What code should I use on functions.php, to only load the plugin shipped with the theme, if carbon fields is not already activated by the user?

    Thanks!

    https://wordpress.org/plugins/carbon-fields/

Viewing 5 replies - 1 through 5 (of 5 total)
  • Plugin Author htmlBurger

    (@htmlburger)

    Hi @anniesp04,

    The best way to include Carbon Fields in a theme is to load it with Composer (https://getcomposer.org). You can add htmlburger/carbon-fields as a composer dependency in the composer.json file and then load Composer’s autoload file in the functions.php file of your theme. For example:

    add_action( 'after_setup_theme', 'crb_setup_theme' );
    function crb_setup_theme() {
    	include_once( __DIR__ .  '/vendor/autoload.php' );
    }

    If you are having difficulties using Composer, you can copy Carbon Fields to your theme (e.g. in folder libs) and then load is using the following code:

    add_action( 'after_setup_theme', 'crb_setup_theme' );
    function crb_setup_theme() {
        // check if Carbon Fields is not already installed
        if ( ! class_exists( '\\Carbon_Fields\\Field\\Field' ) ) {
            require( __DIR__ . '/libs/carbon-fields/carbon-fields-plugin.php' );
        }
    }

    Please, let us know if you’re having further issues.

    Thansks for the reply!

    I was told to load a copy of the plugin with the theme, so i have to stick to that instead of Composer.

    I’ve added the above code and it gave me the following error:

    Fatal error: Class ‘Carbon_Fields\Widget’ not found in C:\xampp\htdocs\new\wp-content\themes\newtheme\widgets.php on line 7

    Before adding the code, the site was loading fine, any suggestions on how to fix it?

    Thanks!

    Plugin Author htmlBurger

    (@htmlburger)

    Here is what you need to do:

    * download the latest version of the plugin from here: https://github.com/htmlburger/carbon-fields/archive/master.zip
    * unzip the archive in your theme, e.g. in lib/carbon-fields directory
    * in your functions.php file, you should require carbon-fields.php file from the theme(https://github.com/htmlburger/carbon-fields/blob/master/carbon-fields.php)

    Thanks, but unfortunatelly it’s still not working as expected.

    If the plugin is active, the widget code works. If i require carbon-fields.php from the themes folder as suggest on the last reply (with the plugin deactivated) it also works.

    The problem is if an already registered user has the plugin activated, it gives me the “Fatal error: Class ‘Carbon_Fields\Widget’ not found in C:\xampp\htdocs\new\wp-content\themes\newtheme\widgets.php on line 7” error even using this code:

    add_action( 'after_setup_theme', 'crb_setup_theme' );
    function crb_setup_theme() {
        // check if Carbon Fields is not already installed
        if ( ! class_exists( '\\Carbon_Fields\\Field\\Field' ) ) {
            require( __DIR__ . '/libs/carbon-fields/carbon-fields-plugin.php' );
        }
    }

    Ideally, I’d have Carbon Fields installed by default on every blog, but I’m not allowed to do it this way, so I have to check it and only load it from the theme only if the plugin is not already activated. Sorry for bothering you with this, but php isn’t very advanced.

    Thanks!

    @htmlburger

    I’m curious, what happens if two plugins include Carbon Fields via Composer?

Viewing 5 replies - 1 through 5 (of 5 total)
  • You must be logged in to reply to this topic.