Remove Custom Networks When Network Add-On is Installed
If the official Network add-on is installed and activated by the theme user to a later time point we should remove our custom networks:
// Core and Networks addon loaded. if ( prefix_can_use_plugin( 'mashsharer/mashshare.php' ) && prefix_can_use_plugin( 'mashshare-networks/mashshare-networks.php' ) ) { add_action( 'init', 'prefix_mashshare_unregister_new_networks' ); } /** * Deregister custom networks */ function prefix_mashshare_unregister_new_networks() { $networks = get_option( 'mashsb_networks' ); // We need to remove our custom networks if the Networks addon is loaded and current networks list contains only our custom networks. if ( count( $networks ) === 5 ) { foreach ( $networks as $network_index => $network_name ) { // Remove custom. if ( in_array( $network_name, array( 'Google', 'Pinterest' ), true ) ) { unset( $networks[ $network_index ] ); } } // Update db. update_option( 'mashsb_networks', $networks ); // Run activation function again to load addon networks. MashshareNetworks::mashnet_during_activation(); } }
Explanation:
If the MashShare Core plugin and the network add-on is installed we fire our custom unregister function before the activation hook of the network add-on gets started. As the MashShare core plugin contains 3 default buttons (Facebook, Twitter, Subscribe) and we added earlier 2 custom buttons to the theme we check first if the array contains a total of 5 buttons. When this is true lets update the db options and fire the activation routine of the network add-on.