| | |
| | | exit; |
| | | } |
| | | |
| | | use JVBase\managers\Cache; |
| | | use JVBase\meta\Form; |
| | | |
| | | /** |
| | | * For whatever reason, after much testing, it seems that |
| | | * good ol' WP resets post_parent if you call wp_update_post |
| | | * without explicitly setting the post_parent |
| | | * This is a wrapper that grabs old data and merges it with |
| | | * what we're trying to update - reducing repetition |
| | | * @param array $postArr as in wp_update_post |
| | | * @param array $allowOverride an array of keys that are allowed to be overridden |
| | | * @return int|WP_Error |
| | | */ |
| | | function jvb_update_post(array $postArr, array $allowOverride = []) { |
| | | if (empty($postArr['ID'])) { |
| | | return new WP_Error('missing_id', 'Post ID is required'); |
| | | } |
| | | |
| | | $old = get_post($postArr['ID'], ARRAY_A); |
| | | if (!$old) { |
| | | return new WP_Error('invalid_id', 'Post not found'); |
| | | } |
| | | /** |
| | | * WARNING: You won't want to override fields like: |
| | | * guid |
| | | * filter |
| | | * ancestors |
| | | * post_category |
| | | * tags_input |
| | | * to_ping |
| | | * pinged |
| | | **/ |
| | | $preserveFields = [ |
| | | 'post_parent', 'menu_order', |
| | | 'post_status', 'post_password', 'comment_status', 'ping_status', |
| | | 'post_date', 'post_date_gmt', 'post_modified', 'post_modified_gmt', |
| | | 'post_name', 'post_title', 'post_excerpt', 'post_content', |
| | | 'post_author' |
| | | ]; |
| | | // Remove fields we explicitly want to override |
| | | $preserveFields = array_diff($preserveFields, $allowOverride); |
| | | |
| | | // Keep only preserved fields from old post |
| | | $old = array_intersect_key($old, array_flip($preserveFields)); |
| | | |
| | | // Merge old → new (new wins) |
| | | $merged = array_merge($old, $postArr); |
| | | $merged['ID'] = (int)$postArr['ID']; |
| | | |
| | | return wp_update_post($merged, true); |
| | | } |
| | | |
| | | /** |
| | | * Outputs the blocks of a CRUD management in backend |
| | | * Mainly used in news.php so far |
| | |
| | | */ |
| | | function jvbRenderDateFilter(string $content):string |
| | | { |
| | | $cache = new JVBase\Managers\CacheManager('date_filter'); |
| | | $cache = Cache::for('date_filter')->connect('post', true); |
| | | $check = $cache->get($content); |
| | | if ($check) { |
| | | return $check; |
| | |
| | | echo $nav; |
| | | |
| | | $fields = jvbGetFields($postType); |
| | | |
| | | $meta = new JVBase\meta\MetaManager($ID, $contentType); |
| | | ?> |
| | | <form class="jvb-form" id="bio" data-form-id="bio-<?=$ID?>" data-save="bio" |
| | | data-object-id="<?=$ID?>" data-content-type="<?=$postType?>"> |
| | |
| | | if (array_key_exists('role', $config)) { |
| | | $user = get_userdata($ID); |
| | | if (in_array($config['role'], $user->roles)) { |
| | | $meta->render('form', $field, $config); |
| | | echo Form::render($field, null, $config); |
| | | } |
| | | } else { |
| | | $meta->render('form', $field, $config); |
| | | echo Form::render($field, null, $config); |
| | | } |
| | | } |
| | | ?> |