Resolved by author
Overview of the issue
If you are using Hestia Pro theme, you may experience an issue where the custom Footer layout created in Appearance > Custom layouts is displayed only in the default language, regardless of the translations available for the layout.
Workaround
Please, make sure of having a full backup of your site before proceeding.
- Open …/wp-content/themes/hestia-pro/inc/addons/modules/custom_layouts/class-hestia-custom-layouts-module.php file.
- Look for line 210.
- Change:
123456789101112131415161718192021222324252627282930313233343536
private
function
map_custom_layouts() {
if
(
$this
->is_builder_preview() ) {
return
true;
}
$cache
= get_transient(
'custom_layouts_posts_map'
);
if
( !
empty
(
$cache
) ) {
self::
$post_map
=
$cache
;
return
true;
}
$query
=
new
WP_Query(
array
(
'post_type'
=>
'hestia_layouts'
,
'posts_per_page'
=> 100,
'no_found_rows'
=> true,
'update_post_meta_cache'
=> false,
'update_post_term_cache'
=> false,
'fields'
=>
'ids'
,
'post_status'
=>
'publish'
,
)
);
if
( !
$query
->have_posts() ) {
return
false;
}
foreach
(
$query
->posts
as
$pid
) {
$layout
= get_post_meta(
$pid
,
'custom-layout-options-layout'
, true );
$priority
= get_post_meta(
$pid
,
'custom-layout-options-priority'
, true );
if
(
$layout
===
'hooks'
) {
$layout
= get_post_meta(
$pid
,
'custom-layout-options-hook'
, true );
}
self::
$post_map
[
$layout
][
$pid
] =
$priority
;
}
set_transient(
'custom_layouts_posts_map'
, self::
$post_map
, DAY_IN_SECONDS );
return
true;
}
- With:
12345678910111213141516171819202122232425262728293031323334353637383940414243
private
function
map_custom_layouts() {
if
(
$this
->is_builder_preview() ) {
return
true;
}
// Get the current language code
$current_language
= apply_filters(
'wpml_current_language'
, NULL);
// Fallback to WPML's current language
// Modify the transient key to include the current language
$wpml_transient_key
=
'custom_layouts_posts_map_'
.
$current_language
;
$cache
= get_transient(
$wpml_transient_key
);
if
( !
empty
(
$cache
) ) {
self::
$post_map
=
$cache
;
return
true;
}
$query
=
new
WP_Query(
array
(
'post_type'
=>
'hestia_layouts'
,
'posts_per_page'
=> 100,
'no_found_rows'
=> true,
'update_post_meta_cache'
=> false,
'update_post_term_cache'
=> false,
'fields'
=>
'ids'
,
'post_status'
=>
'publish'
,
)
);
if
( !
$query
->have_posts() ) {
return
false;
}
foreach
(
$query
->posts
as
$pid
) {
$layout
= get_post_meta(
$pid
,
'custom-layout-options-layout'
, true );
$priority
= get_post_meta(
$pid
,
'custom-layout-options-priority'
, true );
if
(
$layout
===
'hooks'
) {
$layout
= get_post_meta(
$pid
,
'custom-layout-options-hook'
, true );
}
self::
$post_map
[
$layout
][
$pid
] =
$priority
;
}
set_transient(
$wpml_transient_key
, self::
$post_map
, DAY_IN_SECONDS );
return
true;
}
- After that, delete your transients.