options = $options; $this->init(); } /** * Start the engine running * * @return void */ private function init() { add_filter( 'adminoptimizer_settings_navtab', [ $this, 'add_settings_navtab' ] ); add_filter( 'adminoptimizer_settings_sections', [ $this, 'settings_fields' ] ); if ( ! empty( $this->options['enable_custom_post_status'] ) ) { $this->modules['post_status'] = new Post_Status(); } if ( ! empty( $this->options['enable_custom_post_types'] ) ) { $this->modules['post_types'] = new Post_Types(); } if ( ! empty( $this->options['enable_custom_taxonomies'] ) ) { $this->modules['taxonomies'] = new Taxonomies(); } if ( ! empty( $this->options['enable_publish_missed_posts'] ) ) { $this->modules['auto_publish'] = new Publish_Missed_Schedule(); } else { add_action( 'init', [ $this, 'maybe_remove_publication_check_schedule' ], 20 ); } if ( ! empty( $this->options['enable_auto_open_advanced'] ) ) { $this->modules['auto_open_advanced'] = new Auto_Open_Advanced(); } if ( ! empty( $this->options['enable_auto_add_anchor'] ) ) { add_filter( 'block_editor_settings_all', [ $this, 'enable_anchor_target' ] ); } if ( ! empty( $this->options['manage_post_modified_date'] ) ) { $this->modules['modified_date'] = new Modified_Date(); } if ( ! empty( $this->options['enable_post_cloner'] ) ) { $this->modules['post_cloner'] = new \Yipresser\AdminOptimizer\Modules\Post_Cloner\Post_Cloner(); } } /** * Add settings navtab * * @param array $nav_tab List of nav tabs. * * @return array */ public function add_settings_navtab( $nav_tab ) { if ( empty( $nav_tab['content-management'] ) ) { $nav_tab['content-management'] = [ 'title' => __( 'Content Management', 'admin-optimizer' ), 'slug' => 'adminoptim-content-settings', ]; } return $nav_tab; } /** * List of Settings fields * * @param array $fields Settings fields. * * @return array */ public function settings_fields( $fields ) { if ( empty( $fields['content-management'] ) ) { $modules = [ 'post-status' => [ 'type' => 'slider-checkbox', 'title' => __( 'Enable Custom Post Status', 'admin-optimizer' ), 'id' => 'enable-custom-post-status', 'name' => 'enable_custom_post_status', // translators: %1$s is the line break tag. %2$s is the anchor tag. %3$s is the anchor closure tag. 'label' => sprintf( __( 'Enable the creation of custom post status. (comes with Pro options)%1$s%2$sLearn more%3$s', 'admin-optimizer' ), '
', '', '' ), ], 'post-types' => [ 'type' => 'slider-checkbox', 'title' => __( 'Enable Custom Post Types', 'admin-optimizer' ), 'id' => 'enable-custom-post-types', 'name' => 'enable_custom_post_types', // translators: %1$s is the line break tag. %2$s is the anchor tag. %3$s is the anchor closure tag. 'label' => sprintf( __( 'Enable the creation of custom post types.%1$s%2$sLearn more%3$s', 'admin-optimizer' ), '
', '', '' ), ], 'taxonomies' => [ 'type' => 'slider-checkbox', 'title' => __( 'Enable Custom Taxonomies', 'admin-optimizer' ), 'id' => 'enable-custom-taxonomies', 'name' => 'enable_custom_taxonomies', // translators: %1$s is the line break tag. %2$s is the anchor tag. %3$s is the anchor closure tag. 'label' => sprintf( __( 'Enable the creation of custom taxonomies.%1$s%2$sLearn more%3$s', 'admin-optimizer' ), '
', '', '' ), ], 'auto-publish' => [ 'type' => 'slider-checkbox', 'title' => __( 'Auto publish posts with missed schedule', 'admin-optimizer' ), 'id' => 'enable-publish-missed-posts', 'name' => 'enable_publish_missed_posts', // translators: %1$s is the line break tag. %2$s is the anchor tag. %3$s is the anchor closure tag. 'label' => sprintf( __( 'Check posts every 15 minutes and auto publish posts with missed schedule.%1$s%2$sLearn more%3$s', 'admin-optimizer' ), '
', '', '' ), ], 'auto-open-advanced' => [ 'type' => 'slider-checkbox', 'title' => __( 'Auto open Advanced field in Gutenberg on mouse hover', 'admin-optimizer' ), 'id' => 'enable-auto-open-advanced', 'name' => 'enable_auto_open_advanced', // translators: %1$s is the line break tag. %2$s is the anchor tag. %3$s is the anchor closure tag. 'label' => sprintf( __( 'Reduce mouse clicks and open the Advanced field in Gutenberg when you move your mouse over it.%1$s%2$sLearn more%3$s', 'admin-optimizer' ), '
', '', '' ), ], 'auto-add-anchor' => [ 'type' => 'slider-checkbox', 'title' => __( 'Auto Add HTML Anchor to Heading Block', 'admin-optimizer' ), 'id' => 'enable-auto-add-anchor', 'name' => 'enable_auto_add_anchor', // translators: %1$s is the line break tag. %2$s is the anchor tag. %3$s is the anchor closure tag. 'label' => sprintf( __( 'Transform your WordPress headings into clickable link targets, making it easier for readers to navigate through your posts and share specific sections.
(only works in Gutenberg editor)%1$s%2$sLearn more%3$s', 'admin-optimizer' ), '
', '', '' ), ], 'modified-date' => [ 'type' => 'slider-checkbox', 'title' => __( 'Enable locking of Post\'s Modification Date.', 'admin-optimizer' ), 'id' => 'manage-post-modified-date', 'name' => 'manage_post_modified_date', // translators: %1$s is the line break tag. %2$s is the anchor tag. %3$s is the anchor closure tag. 'label' => sprintf( __( 'Change or prevent updating of the last modified date for each post. (comes with Pro options)%1$s%2$sLearn more%3$s', 'admin-optimizer' ), '
', '', '' ), ], 'post-cloner' => [ 'type' => 'slider-checkbox', 'title' => __( 'Enable Post Cloning', 'admin-optimizer' ), 'id' => 'enable-post-cloner', 'name' => 'enable_post_cloner', 'label' => __( 'Duplicate posts, pages and custom posts with a single click. Update and republish content easily with this module. (comes with Pro options)', 'admin-optimizer' ), ], 'post-republisher' => [ 'type' => 'slider-checkbox', 'title' => __( 'Enable Post Republishing (Pro)', 'admin-optimizer' ), 'id' => 'enable-post-republisher', 'name' => 'enable_post_republisher', 'disabled' => 'disabled', 'label' => 'Pro' . __( 'Clone a post as a child of the Post. When you (re)publish the cloned post, it will update the orignal post instead of publishing as a new post. This allows you to update old content quickly and easily.', 'admin-optimizer' ), ], ]; $fields['content-management'] = [ 'id' => 'adminoptimizer-content-settings', 'title' => '', 'description' => '', 'menu_slug' => 'adminoptim-content-settings', 'option_name' => MODULES_OPTION, 'fields' => $modules, ]; } return $fields; } /** * Remove check missed post schedule * * @return void */ public function maybe_remove_publication_check_schedule() { if ( function_exists( 'as_has_scheduled_action' ) && as_has_scheduled_action( 'adminoptim_publish_missed_post' ) ) { as_unschedule_action( 'adminoptim_publish_missed_post' ); } } /** * Auto add anchor target to Headings block * * @param array $editor_settings Editor settings. * * @return array */ public function enable_anchor_target( $editor_settings ) { $editor_settings['generateAnchors'] = true; return $editor_settings; } }