Resolved
Reported for: WPML Multilingual CMS 4.6.4
Resolved in: WPML 4.7
Overview of the issue
If you are using WooCommerce Membership, you will notice that if a page is added under the Restrict Content settings within a membership plan and subsequently deleted, WPML incorrectly applies the restriction to all pages across the site, not just those specified in the membership plan.
Workaround
Please, make sure of having a full backup of your site before proceeding.
- Open …/wp-content/plugins/woocommerce-multilingual/compatibility/WcMemberships/class-wcml-wc-memberships.php file.
- Look for line 134.
- Replace this code:
123456789101112131415
public
function
add_translated_object_ids(
$object_ids
) {
$result
= [];
foreach
(
$object_ids
as
$object_id
) {
$type
= apply_filters(
'wpml_element_type'
, get_post_type(
$object_id
) );
$trid
= apply_filters(
'wpml_element_trid'
, null,
$object_id
,
$type
);
$translations
=
array_values
( wp_list_pluck(
apply_filters(
'wpml_get_element_translations'
, [],
$trid
,
$type
),
'element_id'
) );
$result
=
array_merge
(
$result
,
$translations
);
}
return
$result
;
}
- With:
1234567891011121314151617181920
public
function
add_translated_object_ids(
$object_ids
) {
$result
= [];
foreach
(
$object_ids
as
$object_id
) {
$type
= apply_filters(
'wpml_element_type'
, get_post_type(
$object_id
) );
$trid
= apply_filters(
'wpml_element_trid'
, null,
$object_id
,
$type
);
$translations
=
array_values
( wp_list_pluck(
apply_filters(
'wpml_get_element_translations'
, [],
$trid
,
$type
),
'element_id'
) );
$result
=
array_merge
(
$result
,
$translations
);
}
// Workaround for compsupp-6900
if
(
empty
(
$result
) ) {
return
$object_ids
;
}
return
$result
;
}
When will this be a more permanent fix?
This is already in our devs roadmap, however I can’t provide you an ETA.
We will keep this erratum updated once a fix is released.
Can you confirm this is still an issue on Version: 5.3.8?
This is planned for implementation in version 5.4, but I can’t provide an exact ETA at the moment.
We’ll keep the erratum updated as soon as a fix is released.