Resolved
Reported for: WPML String Translation 3.1.2
Resolved in: String Translation 3.1.3
Overview of the issue
You may see the following error after updating to WPML String Translation 3.1.2:
1 2 3 4 5 6 7 8 9 | [17-Sep-2020 10:51:21 UTC] PHP Fatal error: Uncaught InvalidArgumentException: item should be a Collection or an array or an object in .../wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/fp/core/Obj.php:94 Stack trace: #0 [internal function ]: WPML\FP\Obj::WPML\FP{closure}(NULL, 'attachment_id' , false) #1 .../wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/fp/core/functions.php(141): call_user_func_array(Object(Closure), Array) #2 [internal function ]: WPML\FP\Obj::WPML\FP{closure}(NULL, 'attachment_id' , false) #3 .../wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/collect/src/Illuminate/Support/Traits/Macroable.php(56): call_user_func_array(Object(Closure), Array) #4 .../wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/fp/core/Obj.php(78): WPML\FP\Obj::__callStatic( 'propOr' , Array) #5 [internal function ]: WPML\FP\Obj::WPML\FP{closure}( 'attachment_id' , false) #6 .../wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/f in /home/add/public_html/wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/fp/core/Obj.php on line 94 |
Workaround
- Make a full backup of your site.
- Open your wpml-string-translation/inc/admin-texts/wpml-admin-texts.class.php file.
- Look for the line 255
- Replace:
123456
private
function
isAdminText(
$key
,
$name
) {
return
null !== Wrapper::of(
$this
->getSubKey(
$key
,
$name
) )
->map( [ self::
class
,
'getKeysParts'
] )
->map( invoke(
'reduce'
)->with( flip( Obj::prop() ),
$this
->getOptionNames() ) )
->get();
}
- With:
12345678910
private
function
isAdminText(
$key
,
$name
) {
try
{
return
null !== Wrapper::of(
$this
->getSubKey(
$key
,
$name
))
->map([self::
class
,
'getKeysParts'
])
->map(invoke(
'reduce'
)->with(flip(Obj::prop()),
$this
->getOptionNames()))
->get();
}
catch
(Exception
$ex
) {
error_log
(
$ex
->getMessage() .
' Option Key '
.
$key
);
}
}