You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If you delete an attached post it shows an error on the parent post. I've solved the issue using hooks, code below, let me know where to add this into the plugin itself and I'll PR.
// These two function fix cmb2_attached_posts issue where a related post is deleted and causes an error to show in the WP backend
// Loop through attached posts and create attached_posts_attached_to meta value
function add_attached_to_meta_after_cmb2_save_field( $field_id, $updated, $action, $instance ) {
$parent_id = $instance->data_to_save['post_ID'];
if(substr( $field_id, 0, 8 ) === 'related-') {
$posts = $instance->value;
if(is_array($posts) && count($posts)) {
foreach ($posts as $post_id) {
$existing_meta = false;
$new_meta = [];
// Add this post id to the array meta
// attached_posts_attached_to
$existing_meta = get_post_meta($post_id, 'attached_posts_attached_to');
$new_meta[] = $parent_id;
if(is_array($existing_meta[0])) {
$new_meta = array_unique(array_merge($existing_meta[0], $new_meta), SORT_REGULAR);
}
$add_meta = update_post_meta($post_id, 'attached_posts_attached_to', $new_meta);
}
}
}
}
// add the action
add_action( 'cmb2_save_field', 'add_attached_to_meta_after_cmb2_save_field', 10, 4 );
function remove_related_post_attachements_meta_before_delete_post( $post_id ) {
$attached_to = get_post_meta($post_id, 'attached_posts_attached_to');
foreach ($attached_to[0] as $parent_post_id) {
// Remove the item from the related arrays on that parent post
$parent_meta = get_post_meta($parent_post_id);
foreach ($parent_meta as $meta_key => $meta_value) {
if(substr( $meta_key, 0, 8 ) === 'related-') {
$parent_meta = get_post_meta($parent_post_id, $meta_key);
$parent_meta = $parent_meta[0];
// Remove the post_id from the post we're deleting form the attached meta array
if (($key = array_search($post_id, $parent_meta)) !== false) {
unset($parent_meta[$key]);
}
$new_meta = update_post_meta($parent_post_id, $meta_key, $parent_meta);
}
}
}
}
add_action( 'before_delete_post', 'remove_related_post_attachements_meta_before_delete_post' );
The text was updated successfully, but these errors were encountered:
If you delete an attached post it shows an error on the parent post. I've solved the issue using hooks, code below, let me know where to add this into the plugin itself and I'll PR.
The text was updated successfully, but these errors were encountered: