$args ) { add_theme_support( $feature, $args ); } foreach ( $remove as $feature ) { remove_theme_support( $feature ); } } add_action( 'after_setup_theme', NS . 'add_post_type_supports' ); /** * Handles post type supports. * * @since 0.0.2 * * @return void */ function add_post_type_supports(): void { $post_supports = get_sub_config( 'postTypeSupports' ); $add = $post_supports['add'] ?? []; $remove = $post_supports['remove'] ?? []; foreach ( $add as $post_type => $features ) { foreach ( $features as $feature ) { add_post_type_support( $post_type, $feature ); } } foreach ( $remove as $post_type => $features ) { foreach ( $features as $feature ) { remove_post_type_support( $post_type, $feature ); } } } add_action( 'init', NS . 'rest_fields' ); /** * Registers rest fields. * * @since 0.0.2 * * @return void */ function rest_fields(): void { register_rest_field( 'blockify-page-title', 'title', [ 'get_callback' => function ( $params ) { $post_id = $params['id']; $post = get_post( $post_id ); return $post->post_title; }, 'update_callback' => function ( $value, $object ) { wp_update_post( [ 'ID' => $object->ID, 'post_title' => $value, ] ); }, ] ); register_post_meta( 'page', 'template_part_header', [ 'show_in_rest' => true, 'single' => true, 'type' => 'boolean', ] ); register_post_meta( 'page', 'template_part_footer', [ 'show_in_rest' => true, 'single' => true, 'type' => 'string', ] ); }