- ステータス
- 解決済み
- 解決されたバージョン
- WPML 4.7.6
- 関連するプラグイン/テーマ
- Elementor
- トピックタグ
- Compatibility
問題の概要
Elementor Proのウィジェットの高度な設定では、ユーザーがログインしている場合にのみウィジェットを表示するなど、表示条件を追加できます。
最近、Elementorによるこのデータの保存方法に変更があり、以下のエラーが発生する可能性があります。
PHP Fatal error: Uncaught TypeError: Cannot access offset of type string on string in .../wp-content/plugins/sitepress-multilingual-cms/addons/wpml-page-builders/classes/Integrations/Elementor/Hooks/DisplayConditions.php:138
回避策
Elementorのデータストレージのこの変更に対応するため、コードを更新します。それまでの間、以下のプラグインファイルを編集してください: wp-content/plugins/sitepress-multilingual-cms/addons/wpml-page-builders/classes/Integrations/Elementor/Hooks/DisplayConditions.php
関数convertConditionIds(現在のバージョンの134行目以降)を見つけ、以下のコードに置き換えます:
private function convertConditionIds( array $conditionGroups ) {
// ensure $conditionGroups is an array of arrays and not just an associative array
$result = array_keys($conditionGroups)[0] !== 0 ? array($conditionGroups) : $conditionGroups;
foreach ( $result as $key => $conditionGroup ) {
$configForCondition = $this->getConfigForCondition( $conditionGroup['condition'] );
if ( $configForCondition && isset( $conditionGroup[ $configForCondition['field'] ] ) ) {
$result[ $key ] = $this->convertIdsForCondition( $conditionGroup, $configForCondition );
}
}
return $result;
}