Exception: No service named api was registered

[ad_1]

I am testing a WP installation on my laptop, using local.

PHP 7.4.30, WP 6.4.3

I installed the mc4wp plugin. I configured my Mailchimp account, generated an API key, added it to the plugin, it is connected and happy. It reports that my list has 3 subscribers, which is exact.

In a separate custom plugin, I am adding php code to use the programmatic API in the file mailchimp-for-wp/includes/class_mailchimp.php. I have some success. For instance I can call
    $subscriber_count = $mailchimp->get_subscriber_count($list_id);
and I successfully get 3 subscribers, which is exact. However when I call certain APIs such as this one
    $has_subscriber = $mailchimp->list_has_subscriber($list_id, “[email protected]”);

the code crashes with the following exception:

[12-Mar-2024 03:47:37 UTC] PHP Fatal error:  Uncaught Exception: No service named api was registered. in C:\Users\franc\LocalSites\cac2\app\public\wp-content\plugins\mailchimp-for-wp\includes\class-container.php:38
Stack trace:
#0 C:\Users\franc\LocalSites\cac2\app\public\wp-content\plugins\mailchimp-for-wp\includes\functions.php(28): MC4WP_Container->get('api')
#1 C:\Users\franc\LocalSites\cac2\app\public\wp-content\plugins\mailchimp-for-wp\includes\class-mailchimp.php(557): mc4wp('api')
#2 C:\Users\franc\LocalSites\cac2\app\public\wp-content\plugins\mailchimp-for-wp\includes\class-mailchimp.php(209): MC4WP_MailChimp->get_api()
#3 C:\Users\franc\LocalSites\cac2\app\public\wp-content\plugins\acc-outaouais\acc-outaouais.php(75): MC4WP_MailChimp->list_has_subscriber('20588efba1', 'francois.besset...')
#4 C:\Users\franc\LocalSites\cac2\app\public\wp-content\plugins\acc-outaouais\acc-outaouais.php(93): accou_register_new_user_to_mailchimp('dummy')
#5 C:\Users\franc\LocalSites\cac2\app\public\wp-settings.php(473): include_once('C:\\Users\\franc\\...')
#6 C:\ in C:\Users\franc\LocalSites\cac2\app\public\wp-content\plugins\mailchimp-for-wp\includes\class-container.php on line 38

Why would a service inside the mc4wp plugin not be defined? Any idea what is wrong here? I know I am supplying the right API key and list because they are the same as used by the mc4wp plugin. And I tried them using this curl command and it worked:

curl --request GET --url https://us18.api.mailchimp.com/3.0/lists/20588efba1/members/ --user anystring:64xxxxx54a3-us18

I tried deactivation of most plugins, and spent quite a bit of time searching online for an answer, but could not find one. Here is the code I am using. I am also wondering, do I really have to hardcode the API key here? The installed and configured mc4wp has the API key already, why would I have to pass it again programmatically to the plugin?

require_once WP_PLUGIN_DIR . '/mailchimp-for-wp/vendor/autoload.php';
if(!class_exists('MC4WP_MailChimp')) {
    wp_die('Please install and activate Mailchimp for WordPress (MC4WP) plugin.');
}

define('MC4WP_API_KEY_FOR_ACCOU', '64xxxxxxxx4a3-us18');

function accou_register_new_user_to_mailchimp($user_id) {
    error_log("inside accou_register_new_user_to_mailchimp...");

    $api_key = MC4WP_API_KEY_FOR_ACCOU;
    error_log("The key is $api_key");
    
    $mailchimp = new MC4WP_MailChimp($api_key);
    $list_id = "2xxxxxx1";
    $email = "[email protected]";

    $subscriber_count = $mailchimp->get_subscriber_count($list_id);
    error_log("Mailchimp has $subscriber_count subscribers");

    //!!!!! if uncommented, the next line causes an exception !!!!!
    $has_subscriber = $mailchimp->list_has_subscriber($list_id, "[email protected]");
    error_log("has subscriber = $has_subscriber");

}

Other questions I have:

  • Is there documentation on the public programmatic functions provided by the plugin?
  • Do I have the right way to include dependencies?
  • Am I passing the right parameter to new MC4WP_MailChimp()?

 

This site will teach you how to build a WordPress website for beginners. We will cover everything from installing WordPress to adding pages, posts, and images to your site. You will learn how to customize your site with themes and plugins, as well as how to market your site online.

Buy WordPress Transfer