Overview of the Issue
Under some scenarios, Advanced Custom Fields Multilingual (ACFML) plugin may run into a PHP warning when utilizing ACF fields:
Attempt to read property "post_content" on null in plugins .../acfml/classes/class-wpml-acf-repeater-shuffle.php on line 249
Workaround
This issue is fixed in Advanced Custom Fields Multilingual 2.2.0. Updating solves it on your site, so you only need this workaround if you can’t update yet.
Please, make sure of having a full backup of your site before proceeding.
- Open …/acfml/classes/class-wpml-acf-repeater-shuffle.php file.
- Look for line 244.
- Replace:
private function isChildOfRepeaterField( $key, $postId ) { $acfFieldObject = get_field_object( $key, $postId ); if ( isset( $acfFieldObject['parent'] ) && $acfFieldObject['parent'] > 0 ) { $fieldParent = get_post( $acfFieldObject['parent'] ); $fieldParentContent = maybe_unserialize( $fieldParent->post_content ); if ( isset( $fieldParentContent['type'] ) && 'repeater' === $fieldParentContent['type'] ) { return true; } } return false; } - With:
private function isChildOfRepeaterField( $key, $postId ) { $acfFieldObject = get_field_object( $key, $postId ); if ( isset( $acfFieldObject['parent'] ) ) { if ( is_numeric( $acfFieldObject['parent'] ) && $acfFieldObject['parent'] > 0 ) { $fieldParent = get_post( $acfFieldObject['parent'], $postId ); if ( $fieldParent ) { $fieldParentContent = maybe_unserialize( $fieldParent->post_content ); if ( isset( $fieldParentContent['type'] ) && 'repeater' === $fieldParentContent['type'] ) { return true; } } } elseif ( is_string( $acfFieldObject['parent'] ) ) { $fieldParent = get_field_object( $acfFieldObject['parent'], $postId ); if ( isset( $fieldParent['type'] ) && 'repeater' === $fieldParent['type'] ) { return true; } } } return false; }