4

I'm creating a theme with woocommerce which has the following:

    <ul>
              <li>
                     <?php if ( is_user_logged_in() ) { ?>
<a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id') ); ?>" title="<?php _e('My Account','woothemes'); ?>"><?php _e('My Account','woothemes'); ?></a>
<?php }
else { ?>
<a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id') ); ?>" title="<?php _e('Sign-in','woothemes'); ?>"><?php _e('Sign-in','woothemes'); ?></a>
<?php } ?>
                </li>
                                                <li><a href="<?php echo get_option('home').'/'.'my-lists/'?>" title="My Wishlist">Wishlist</a></li>

<!--                <li><a href="#" title="Email updates">Email Updates</a></li>
-->                <li> <?php global $woocommerce; ?>

<a id="header-ShoppingCart" class="cart-contents" href="<?php echo $woocommerce->cart->get_cart_url(); ?>" title="<?php _e('View your shopping cart', 'woothemes'); ?>"><?php echo sprintf(_n('%d item', 'My Bag (%d)', $woocommerce->cart->cart_contents_count, 'woothemes'), $woocommerce->cart->cart_contents_count);?> - <span id="header-cartCount"><?php echo $woocommerce->cart->get_cart_total(); ?></span></a>

           </li>

            </ul>

However this breaks the site if the woocommerce plugin is not activated. How can I check if the woocommerce plugin is activated?

17

You could check to see if the 'WooCommerce' class exists, then run the code that requires WooCommerce.

<?php
if ( class_exists( 'WooCommerce' ) ) {
  // code that requires WooCommerce
} else {
  // you don't appear to have WooCommerce activated
}
?>
  • 1
    class_exists('WooCommerce') is going to return false, if the code is placed in functions.php while "activating plugin" ( the plugin is going to be activated after you check for WooCommerce class ). – justnorris Jan 28 '15 at 11:58
  • So this would be false if someone happened to load the page at the exact moment that the plugin was being activated? – hereswhatidid Jan 28 '15 at 14:49
  • 1
    You can't really load at the "exact moment", you can load 1ms before or after. It's important to pay attention here, because, if you declare some Woo function for a condition where WooCommerce doesn't exist ( like your own is_woocommerce() ), then you will receive a fatal error when trying to activate WooCommerce Plugin, because you will register your function first, and only then WooCommerce is going to try to register their is_woocommerce() function, and that is going to cause a fatal error and prevent WooCommerce plugin from ever activating. – justnorris Jan 29 '15 at 16:14
  • 1
    Right, but my point is that it would only fail if you declared a function that was also declared in WooCommerce. Simply detecting it's existence in a theme, as stated in the question, wouldn't be affected by this. – hereswhatidid Jan 30 '15 at 15:37
  • 1
    Yep, And I'm not arguing with you, I'm just posting relevant information, just in case someone decides to redeclare a function if WooCommerce doesn't exist – justnorris Feb 5 '15 at 9:38
9

To check if woocommerce or anyother plguin is active, paste the following code on the template where you want to display the message.

if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
    echo 'WooCommerce is active.';
} else {
    echo 'WooCommerce is not Active.';
}
1

Use following code. It will work on multi site also.

include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
if(is_plugin_active( 'woocommerce/woocommerce.php')) return;

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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