Hi Chris
This is something that is difficult to debug remotely, but I can talk you through some of the code involved in determining whether to display the WPML Groups tab, so that you might be able to debug it yourself in the environment where it is not working to determine why not.
Essentially what happens is that Access simply checks if WPML is active and if it is a modern version (> 3.3) before generating the WPML Groups tab.
The test checks whether $wpcf_access->wpml_installed_groups is true.
By default it is false, but it may be set to true by the function toolset_access_wpml_loaded in types-access/application/models/wpml_settings.php (defined from line 65).
Here is the first part of that function:
public function toolset_access_wpml_loaded() {
global $wpcf_access;
$wpcf_access->wpml_installed = apply_filters( 'wpml_setting', false, 'setup_complete' );
$wpcf_access->wpml_installed_groups = false;
$wpcf_access->active_languages = array();
$wpcf_access->current_language = apply_filters( 'wpml_current_language', null );
$access_roles = UserRoles::get_instance();
$role = $access_roles->get_main_role();
if ( $wpcf_access->wpml_installed ) {
if ( wpml_version_is( '3.3', '>=' ) ) {
$wpcf_access->active_languages = apply_filters( 'wpml_active_languages', '', array( 'skip_missing' => 0 ) );
foreach ( $wpcf_access->active_languages as $lang => $lang_array ) {
$keys_to_preserve = array( 'code', 'english_name', 'native_name', 'active' );
$wpcf_access->active_languages[ $lang ] = array_intersect_key( $lang_array, array_fill_keys( $keys_to_preserve, null ) );
}
$wpcf_access->wpml_installed_groups = true;
To reach that final line, as well as checking the WPML version number, $wpcf_access->wpml_installed must be true.
Its value is determined by the line
$wpcf_access->wpml_installed = apply_filters( 'wpml_setting', false, 'setup_complete' );
We move to the WPML codebase to see if any callbacks are added to the filter 'wpml_setting'.
That happens on line 371 of sitepress-multilingual-cms/sitepress.class.php, where the wpml_get_setting_filter callback is added.
That callback is defined in sitepress-multilingual-cms/inc/functions.php (line 102), which in turn calls the function wpml_get_setting, defined at line 81 of the same file:
function wpml_get_setting( $key, $default = null ) {
global $sitepress_settings;
$sitepress_settings = isset( $sitepress_settings ) ? $sitepress_settings : get_option( 'icl_sitepress_settings' );
return isset( $sitepress_settings[ $key ] ) ? $sitepress_settings[ $key ] : $default;
}
So, that's where the key test occurs, getting the 'setup_complete' element of the WordPress option 'icl_sitepress_settings'.
Hopefully that can help you identify where something goes wrong, which, as you say, is likely related to the caching on your site.