add_section( array( 'id' => 'passster_general_settings', 'title' => __( 'Options', 'content-protector' ), ) ); $settings->add_field( 'passster_general_settings', array( 'id' => 'passster_advanced_cookie_title', 'type' => 'title', 'name' => '

' . __( 'Cookie', 'content-protector' ) . '

', ) ); $settings->add_field( 'passster_general_settings', array( 'id' => 'toggle_cookie', 'type' => 'toggle', 'default' => 'on', 'name' => __( 'Use Cookie', 'content-protector' ), ) ); $settings->add_field( 'passster_general_settings', array( 'id' => 'passster_cookie_duration', 'type' => 'number', 'name' => __( 'Cookie Duration', 'content-protector' ), 'desc' => __( 'Duration (in days) for your cookie. Once a cookie expires, the user will have to enter the password again.', 'content-protector' ), 'default' => '2', 'min' => 1, ) ); $settings->add_field( 'passster_general_settings', array( 'id' => 'passster_advanced_compatibility_mode', 'type' => 'title', 'name' => '

' . __( 'Compatibility Mode', 'content-protector' ) . '

', ) ); $settings->add_field( 'passster_general_settings', array( 'id' => 'toggle_ajax', 'type' => 'toggle', 'default' => 'off', 'name' => __( 'Reload after successful validation', 'content-protector' ), ) ); $settings->add_field( 'passster_general_settings', array( 'id' => 'passster_advanced_amp_title', 'type' => 'title', 'name' => '

' . __( 'AMP', 'content-protector' ) . '

', ) ); $settings->add_field( 'passster_general_settings', array( 'id' => 'toggle_amp', 'type' => 'toggle', 'default' => 'off', 'name' => __( 'Activate AMP Support', 'content-protector' ), ) ); $settings->add_field( 'passster_general_settings', array( 'id' => 'passster_advanced_third_party_title', 'type' => 'title', 'name' => '

' . __( 'Third-Party Support', 'content-protector' ) . '

', ) ); $settings->add_field( 'passster_general_settings', array( 'id' => 'third_party_shortcodes', 'type' => 'textarea', 'name' => __( 'Third-Party Shortcodes', 'content-protector' ), 'desc' => __( 'Add a comma separated list of shortcodes you want to use inside of Passster.
You can also use {post-id} to add the ID of the current page/post dynamically. ', 'content-protector' ), ) ); $settings->add_field( 'passster_general_settings', array( 'id' => 'passster_advanced_delete_title', 'type' => 'title', 'name' => '

' . __( 'Uninstall', 'content-protector' ) . '

', ) ); $settings->add_field( 'passster_general_settings', array( 'id' => 'passster_advanced_delete_options', 'type' => 'checkbox', 'name' => __( 'Delete Plugin Options On Uninstall', 'content-protector' ), 'desc' => __( 'If checked, all plugin options will be deleted if the plugin is unstalled.', 'content-protector' ), ) ); $settings->add_section( array( 'id' => 'passster_advanced_settings', 'title' => __( 'External Services', 'content-protector' ), ) ); $settings->add_field( 'passster_advanced_settings', array( 'id' => 'passster_recaptcha_title', 'type' => 'title', 'name' => '

' . __( 'Google Recaptcha', 'content-protector' ) . '

', ) ); $settings->add_field( 'passster_advanced_settings', array( 'id' => 'passster_recaptcha_type', 'type' => 'select', 'name' => __( 'Recaptcha Version', 'content-protector' ), 'options' => array( 'v3' => 'V3 (invisible Captcha)', 'v2' => 'V2 (Checkbox)', ), ) ); $settings->add_field( 'passster_advanced_settings', array( 'id' => 'passster_recaptcha_site_key', 'type' => 'text', 'name' => __( 'Site Key', 'content-protector' ), 'desc' => __( 'Add your Google ReCaptcha Site Key', 'content-protector' ), 'premium' => 'premium', ) ); $settings->add_field( 'passster_advanced_settings', array( 'id' => 'passster_recaptcha_secret', 'type' => 'text', 'name' => __( 'Secret', 'content-protector' ), 'desc' => __( 'Add your Google ReCaptcha Secret', 'content-protector' ), 'premium' => 'premium', ) ); $settings->add_field( 'passster_advanced_settings', array( 'id' => 'passster_recaptcha_language', 'type' => 'text', 'name' => __( 'Language', 'content-protector' ), 'desc' => __( 'Add your language shortcode. For example "en" for english or "de" for german. ', 'content-protector' ), 'default' => 'en', 'premium' => 'premium', ) ); $settings->add_field( 'passster_advanced_settings', array( 'id' => 'passster_bitly_title', 'type' => 'title', 'name' => '

' . __( 'Bitly', 'content-protector' ) . '

', ) ); $settings->add_field( 'passster_advanced_settings', array( 'id' => 'passster_bitly_access_key', 'type' => 'text', 'name' => __( 'Bitly Access Token', 'content-protector' ), 'desc' => __( 'Add your bitly access token. You can get one here: bitly.com', 'content-protector' ), 'premium' => 'premium', ) ); } /** * Add admin assets * * @return void */ public function add_admin_scripts() { $suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min' ); wp_enqueue_style( 'passster-admin-css', PASSSTER_URL . '/assets/admin/passster-admin.css', '1.0', 'all' ); wp_enqueue_script( 'passster-admin-js', PASSSTER_URL . '/assets/admin/passster-admin' . $suffix . '.js', array( 'jquery' ), '1.0', false ); wp_localize_script( 'passster-admin-js', 'ps_admin_ajax', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'passster-admin-nonce' ), 'reset_message' => __( 'Usage data resetted.', 'content-protector' ), ) ); } /** * Register post type "password lists" * * @return void */ public function register_password_lists() { } /** * Register post type "protected areas" * * @return void */ public function register_password_areas() { $labels = array( 'name' => _x( 'Protected Areas', 'post type general name', 'content-protector' ), 'singular_name' => _x( 'Protected Area', 'post type singular name', 'content-protector' ), 'menu_name' => _x( 'Protected Areas', 'admin menu', 'content-protector' ), 'name_admin_bar' => _x( 'Protected Area', 'add new on admin bar', 'content-protector' ), 'add_new' => _x( 'Add New', 'content-protector' ), 'add_new_item' => __( 'Add New Protected Area', 'content-protector' ), 'new_item' => __( 'New Protected Area', 'content-protector' ), 'edit_item' => __( 'Edit Protected Area', 'content-protector' ), 'view_item' => __( 'View Protected Area', 'content-protector' ), 'all_items' => __( 'Protected Areas', 'content-protector' ), 'search_items' => __( 'Search Protected Areas', 'content-protector' ), 'parent_item_colon' => __( 'Parent Protected Area', 'content-protector' ), 'not_found' => __( 'No Protected Areas found.', 'content-protector' ), 'not_found_in_trash' => __( 'No Protected Areas found in Trash.', 'content-protector' ), ); $args = array( 'labels' => $labels, 'description' => __( 'Manageable protected areas', 'content-protector' ), 'public' => false, 'publicly_queryable' => false, 'show_ui' => true, 'show_in_menu' => 'passster', 'query_var' => true, 'rewrite' => false, 'capability_type' => 'post', 'has_archive' => false, 'hierarchical' => false, 'menu_position' => null, 'supports' => array( 'title', 'editor' ), 'show_in_rest' => true, ); if ( current_user_can( 'administrator' ) ) { $args['public'] = true; $args['publicly_queryable'] = true; } register_post_type( 'protected_areas', $args ); } /** * Set column headers password lists post type * * @param array $columns array of columns. * @return array */ public function set_columns( $columns ) { } /** * Add content to registered columns for password list post type. * * @param string $column name of the column. * @param int $post_id current id. * @return void */ public function set_columns_content( $column, $post_id ) { } /** * Set column headers password lists post type * * @param array $columns array of columns. * @return array */ public function set_area_columns( $columns ) { $columns['shortcode'] = __( 'Shortcode', 'content-protector' ); unset( $columns['date'] ); return $columns; } /** * Add content to registered columns for password list post type. * * @param string $column name of the column. * @param int $post_id current id. * @return void */ public function set_area_columns_content( $column, $post_id ) { switch ( $column ) { case 'shortcode': $shortcode = get_post_meta( $post_id, 'passster_area_shortcode', true ); echo esc_html( $shortcode ) ; break; } } /** * Return default based on option name. * * @param string $option_name name of the option. * @return array */ public static function get_defaults( $option_name ) { switch ( $option_name ) { case 'passster_general_settings': $settings = array( 'toggle_cookie' => 'on', 'toggle_ajax' => 'off', 'passster_cookie_duration' => 2, 'toggle_amp' => 'off', 'passster_advanced_delete_options' => 'off', ); return $settings; break; case 'passster_advanced_settings': $settings = array( 'passster_recaptcha_site_key' => '', 'passster_recaptcha_type' => 'v3', 'passster_recaptcha_secret' => '', 'passster_recaptcha_language' => '', 'passster_bitly_access_key' => '', ); return $settings; break; } } /** * Decrease remaining downloads in post meta. */ public function reset_usage_data() { } /** * Add Gutenberg support for editing areas. * * @param bool $can_edit bool indicates if editable or not. * @param string $post_type given post type. * @return bool */ public function activate_areas_block_editor( $can_edit, $post_type ) { if ( 'protected_areas' == $post_type ) { $can_edit = true; } return $can_edit; } }