. */ defined( 'ABSPATH' ) || exit; if ( defined( 'POLYLANG_VERSION' ) ) { // The user is attempting to activate a second plugin instance, typically Polylang and Polylang Pro. require_once ABSPATH . 'wp-admin/includes/plugin.php'; require_once ABSPATH . 'wp-includes/pluggable.php'; if ( is_plugin_active( plugin_basename( __FILE__ ) ) ) { deactivate_plugins( plugin_basename( __FILE__ ) ); // Deactivate this plugin. // WP does not allow us to send a custom meaningful message, so just tell the plugin has been deactivated. wp_safe_redirect( add_query_arg( 'deactivate', 'true', remove_query_arg( 'activate' ) ) ); exit; } return; } // Go on loading the plugin. define( 'POLYLANG_VERSION', '3.8.2' ); define( 'PLL_MIN_WP_VERSION', '6.5' ); define( 'PLL_MIN_PHP_VERSION', '7.4' ); define( 'POLYLANG_FILE', __FILE__ ); define( 'POLYLANG_DIR', __DIR__ ); // Whether we are using Polylang or Polylang Pro, get the filename of the plugin in use. if ( ! defined( 'POLYLANG_ROOT_FILE' ) ) { define( 'POLYLANG_ROOT_FILE', __FILE__ ); } if ( ! defined( 'POLYLANG_BASENAME' ) ) { define( 'POLYLANG_BASENAME', plugin_basename( __FILE__ ) ); // Plugin name as known by WP. require __DIR__ . '/vendor/autoload.php'; } define( 'POLYLANG', ucwords( str_replace( '-', ' ', dirname( POLYLANG_BASENAME ) ) ) ); if ( ! empty( $_GET['deactivate-polylang'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification return; } require POLYLANG_DIR . '/src/constant-functions.php'; if ( ! PLL_Usable::can_activate() ) { // WP version or php version is too old. return; } define( 'POLYLANG_ACTIVE', true ); if ( PLL_Deactivate::is_deactivation() ) { // Stopping here if we are going to deactivate the plugin (avoids breaking rewrite rules). PLL_Deactivate::add_hooks(); return; } PLL_Activate::add_hooks(); new Polylang();