is_plugin_active () gibt beim aktiven Plugin false zurück

Also habe ich folgendes in einem Include in meiner Theme-Datei:

include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); if ( is_plugin_active( WP_PLUGIN_DIR . '/woocommerce/woocommerce.php' ) ) { $shop_id = woocommerce_get_page_id( 'shop' ); $shop_page = get_page( $shop_id ); } 

aber is_plugin_active( WP_PLUGIN_DIR . '/woocommerce/woocommerce.php') gibt false zurück, obwohl das Plugin aktiv ist.

Ich frage mich, ob is_plugin_active() durch den Theme-Customizer gestolpert sein könnte, weil die Tatsache, dass ich das mache, während ich mich an customize_preview_init halte, der einzige Fehler ist, den ich mir vorstellen könnte, würde das Problem verursachen. Irgendwelche Einsichten?

Solutions Collecting From Web of "is_plugin_active () gibt beim aktiven Plugin false zurück"

is_plugin_active() erwartet nur den is_plugin_active() des Plugins als Parameter:

Also benutze:

 is_plugin_active( 'woocommerce/woocommerce.php' ); 

Die function verwendet die Option 'active_plugins' die bereits eine Liste von Plugins-Pfaden relativ zum Plugin-Verzeichnis enthält.

Bei einer Installation mit mehreren Standorten wird auch in get_site_option( 'active_sitewide_plugins') .

Als Implementierungshinweis: Vermeiden Sie diese Überprüfungen. Einige Benutzer benennen Plug-in-Namen oder Verzeichnisse um. Testen Sie stattdessen die functionen, die Sie tatsächlich verwenden, zB:

 if ( function_exists( 'woocommerce_get_page_id' ) ) { // do something } 

Falls Sie nicht wissen, welche Plugins aktiv sind, können Sie Folgendes tun.

 // get array of active plugins $active_plugins = (array) get_option( 'active_plugins', array() ); // see active plugins 'plugin-dir-name/plugin-base-file.php' echo '
'; print_r( $active_plugins ); echo '

'; if ( ! empty( $active_plugins ) && in_array( 'plugin-dir-name/plugin-base-file.php', $active_plugins ) ) { // do something if plugin is active }

Als Referenz schauen Sie sich die function is_plugin_active in ‘wp-admin / includes / plugin.php’ an

 function is_plugin_active( $plugin ) { return in_array( $plugin, (array) get_option( 'active_plugins', array() ) ) || is_plugin_active_for_network( $plugin ); }