public function __construct( $post_type ) { $this->post_type = $post_type; $this->help_base = GENESIS_VIEWS_DIR . '/help/cpt-archive-'; /** * Filter the enable CPT archive layout setting. * * @since 2.5.0 * * @param bool $enable_layout Enable CPT archive layout setting. Default true. */ $this->layout_enabled = apply_filters( "genesis_cpt_archive_layout_setting_enable-{$this->post_type->name}", true ); //phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores $page_id = 'genesis-cpt-archive-' . $this->post_type->name; $menu_ops = [ 'submenu' => [ 'parent_slug' => 'edit.php?post_type=' . $this->post_type->name, 'page_title' => apply_filters( 'genesis_cpt_archive_settings_page_label', __( 'Archive Settings', 'genesis' ) ), 'menu_title' => apply_filters( 'genesis_cpt_archive_settings_menu_label', __( 'Archive Settings', 'genesis' ) ), 'capability' => apply_filters( "genesis_cpt_archive_settings_capability_{$this->post_type->name}", 'manage_options' ), ], ]; // Handle non-top-level CPT menu items. if ( is_string( $this->post_type->show_in_menu ) ) { $menu_ops['submenu']['parent_slug'] = $this->post_type->show_in_menu; $menu_ops['submenu']['menu_title'] = apply_filters( 'genesis_cpt_archive_settings_label', $this->post_type->labels->name . ' ' . __( 'Archive', 'genesis' ) ); $menu_ops['submenu']['menu_position'] = $this->post_type->menu_position; } $page_ops = []; // Use defaults. $settings_field = GENESIS_CPT_ARCHIVE_SETTINGS_FIELD_PREFIX . $this->post_type->name; $default_settings = apply_filters( 'genesis_cpt_archive_settings_defaults', [ 'headline' => '', 'intro_text' => '', 'doctitle' => '', 'description' => '', 'keywords' => '', 'layout' => '', 'body_class' => '', 'noindex' => 0, 'nofollow' => 0, 'noarchive' => 0, ], $this->post_type->name ); $this->create( $page_id, $menu_ops, $page_ops, $settings_field, $default_settings ); add_action( 'genesis_settings_sanitizer_init', [ $this, 'sanitizer_filters' ] ); }