php_SettingsIndexableFields.php

<?php

namespace FindStr;

class SettingsIndexableFields extends Settings {

  public function __construct() {
    $this->settings_option_name = 'findstrIndexableFields';
    /**
     * Filter the indexable settings save path
     *
     * @hook findstr_settings_indexable_fields_save_path
     *
     * @param {string} $settings_save_file
     *
     * @return {string} $settings_save_file
     */
    $this->settings_save_file = apply_filters( 'findstr_settings_indexable_fields_save_path', 'findstr/indexable-fields.json' );
    $this->default_settings   = $this->get_default_settings();
    parent::__construct();
  }

  public function get_default_settings(): object {

    //json decode and encode to make sure the array is an object
    return json_decode(
      wp_json_encode(
        array(
          'ID'             => array(
            'id'         => 'ID',
            'searchable' => true,
            'filterable' => false,
            'sortable'   => true,
            'label'      => 'ID',
            'type'       => 'text',
          ),
          'post_title'     => array(
            'id'         => 'post_title',
            'searchable' => true,
            'filterable' => true,
            'sortable'   => true,
            'label'      => 'Title',
            'type'       => 'text',
          ),
          'post_content'   => array(
            'id'         => 'post_content',
            'searchable' => true,
            'filterable' => false,
            'sortable'   => false,
            'label'      => 'Content',
            'type'       => 'text',
          ),
          'permalink'      => array(
            'id'         => 'permalink',
            'searchable' => true,
            'filterable' => false,
            'sortable'   => false,
            'label'      => 'Permalink',
            'type'       => 'text',
          ),
          'post_type'      => array(
            'id'         => 'post_type',
            'filterable' => true,
            'sortable'   => false,
            'label'      => 'Post Type',
            'type'       => 'text',
          ),
          'featured_image' => array(
            'id'         => 'featured_image',
            'filterable' => false,
            'sortable'   => false,
            'label'      => 'Featured Image',
            'type'       => 'text',
          ),
          'language'       => array(
            'id'         => 'language',
            'filterable' => true,
            'sortable'   => false,
            'label'      => 'Language',
            'type'       => 'text',
          ),
          'post_date'      => array(
            'id'         => 'post_date',
            'filterable' => true,
            'sortable'   => true,
            'label'      => 'Date',
            'type'       => 'date',
          ),
          'post_name'      => array(
            'id'         => 'post_name',
            'searchable' => true,
            'filterable' => false,
            'sortable'   => false,
            'label'      => 'Slug',
            'type'       => 'text',
          ),
        )
      )
    );
  }

}