settings = new Post_Types_Settings( $this->options ); if ( ! empty( $this->options ) ) { add_action( 'init', [ $this, 'register_custom_post_type' ] ); } add_action( 'init', [ $this, 'maybe_flush_rules' ], 11 ); } /** * Render the settings page * * @return void */ public function render_settings_page() { $this->settings->render_settings_page(); } /** * Register custom post types * * @return void */ public function register_custom_post_type() { if ( ! empty( $this->options ) ) { foreach ( $this->options as $slug => $post_type_arg ) { if ( isset( $post_type_arg['rewrite'] ) && is_array( $post_type_arg['rewrite'] ) ) { $rewrite_slug = isset( $post_type_arg['rewrite']['slug'] ) ? trim( (string) $post_type_arg['rewrite']['slug'] ) : ''; if ( '' === $rewrite_slug ) { $post_type_arg['rewrite']['slug'] = $slug; } } unset( $post_type_arg['do_rewrite'] ); unset( $post_type_arg['do_capabilities'] ); unset( $post_type_arg['capability_type'] ); register_post_type( $slug, $post_type_arg ); } } } /** * Maybe flush rewrite rules if needed. * * @return void */ public function maybe_flush_rules() { $need_flush_rules = get_transient( 'adminoptim_post_types_flush_rules' ); if ( ! empty( $need_flush_rules ) ) { flush_rewrite_rules(); delete_transient( 'adminoptim_post_types_flush_rules' ); } } }