'aged-content-message' ), admin_url( 'options-general.php' ) ); } /** * Settings link on the plugin page. * * @param array $plugin_links Plugin links, typically Activate|Deactivate and Edit. */ function aged_content_message__plugins_page_settings_link( $plugin_links ) { // Thou shalt not edit plugins in your back-end. if ( isset( $plugin_links['edit'] ) ) { unset( $plugin_links['edit'] ); } // Thou shalt, however, edit your settings quickly. $plugin_links['aged-content-message-settings'] = sprintf( '%2$s', esc_url( aged_content_message__admin_get_settings_page_url() ), __( 'Settings', 'aged-content-message' ) ); return $plugin_links; } /** * The settings page. * I thought I was never going to do this. * * @return void */ function aged_content_message__add_admin_menu() { add_options_page( __( 'Aged Content Message', 'aged-content-message' ), __( 'Aged Content', 'aged-content-message' ), 'manage_options', 'aged-content-message', 'aged_content_message__settings_page' ); } /** * Adding all the sections and fields. * * @return void */ function aged_content_message__settings_init() { $defaults = aged_content_message__defaults(); $options = get_option( 'aged_content_message__settings' ); // First run: fill option. if ( empty( $options ) ) { update_option( 'aged_content_message__settings', $defaults ); } // Later runs: check for and merge new defaults. $diff = array_diff_key( (array) $defaults, (array) $options ); if ( ! empty( $diff ) ) { $options = wp_parse_args( $options, $defaults ); update_option( 'aged_content_message__settings', $options ); } register_setting( 'aged_content_message', 'aged_content_message__settings', array( 'sanitize_callback' => 'aged_content_message__sanitize_settings', ) ); add_settings_section( 'aged_content_message_preview', __( 'Preview', 'aged-content-message' ), 'aged_content_message__settings_preview', 'aged_content_message' ); add_settings_field( 'activate', __( 'Activate Message', 'aged-content-message' ), 'aged_content_message__activate_render', 'aged_content_message', 'aged_content_message_preview', array( 'label_for' => 'aged_content_message__settings[activate]' ) ); add_settings_section( 'aged_content_message_settings', __( 'Settings', 'aged-content-message' ), 'aged_content_message__settings_fields', 'aged_content_message' ); add_settings_field( 'min_age', __( 'Minimal Post Age', 'aged-content-message' ), 'aged_content_message__min_age_render', 'aged_content_message', 'aged_content_message_settings' ); add_settings_field( 'heading', __( 'Message Heading', 'aged-content-message' ), 'aged_content_message__heading_render', 'aged_content_message', 'aged_content_message_settings' ); add_settings_field( 'body_singular', __( 'Message Body (Singular)', 'aged-content-message' ), 'aged_content_message__body_singular_render', 'aged_content_message', 'aged_content_message_settings' ); add_settings_field( 'body_plural', __( 'Message Body (Plural)', 'aged-content-message' ), 'aged_content_message__body_plural_render', 'aged_content_message', 'aged_content_message_settings' ); add_settings_field( 'class', __( 'Message Class Attribute', 'aged-content-message' ), 'aged_content_message__class_render', 'aged_content_message', 'aged_content_message_settings' ); add_settings_field( 'html', __( 'Message HTML', 'aged-content-message' ), 'aged_content_message__html_render', 'aged_content_message', 'aged_content_message_settings' ); add_settings_field( 'css', __( 'Message CSS', 'aged-content-message' ), 'aged_content_message__css_render', 'aged_content_message', 'aged_content_message_settings' ); } /** * Sanitize settings before saving. * * @param array $input Raw settings submitted from the settings form. * @return array Sanitized settings. */ function aged_content_message__sanitize_settings( $input ) { $input = (array) $input; $defaults = aged_content_message__defaults(); $output = array(); $min_age = isset( $input['min_age'] ) && is_scalar( $input['min_age'] ) ? wp_unslash( $input['min_age'] ) : $defaults['min_age']; $heading = isset( $input['heading'] ) && is_scalar( $input['heading'] ) ? wp_unslash( $input['heading'] ) : $defaults['heading']; $singular = isset( $input['body_singular'] ) && is_scalar( $input['body_singular'] ) ? wp_unslash( $input['body_singular'] ) : $defaults['body_singular']; $plural = isset( $input['body_plural'] ) && is_scalar( $input['body_plural'] ) ? wp_unslash( $input['body_plural'] ) : $defaults['body_plural']; $class = isset( $input['class'] ) && is_scalar( $input['class'] ) ? wp_unslash( $input['class'] ) : $defaults['class']; $html = isset( $input['html'] ) && is_scalar( $input['html'] ) ? wp_unslash( $input['html'] ) : $defaults['html']; $css = isset( $input['css'] ) && is_scalar( $input['css'] ) ? wp_unslash( $input['css'] ) : $defaults['css']; $output['activate'] = ! empty( $input['activate'] ) ? 1 : 0; $output['min_age'] = max( 1, absint( $min_age ) ); $output['heading'] = sanitize_post_field( 'post_title', $heading, 0, 'db' ); $output['body_singular'] = sanitize_post_field( 'post_content', $singular, 0, 'db' ); $output['body_plural'] = sanitize_post_field( 'post_content', $plural, 0, 'db' ); $output['class'] = aged_content_message__sanitize_html_class_names( $class ); $output['html'] = wp_kses_post( force_balance_tags( $html ) ); $output['css'] = wp_strip_all_tags( $css ); return $output; } /** * Activate Message setting. * * @return void */ function aged_content_message__activate_render() { global $allowedtags; $options = aged_content_message__get_settings(); $value = isset( $options['activate'] ) ? absint( $options['activate'] ) : 0; $description = __( 'Ready? Activate the message on your website now.', 'aged-content-message' ); if ( ! empty( $value ) ) { $description = __( 'The message is being displayed on your website right now. Uncheck to deactivate and re-configure.', 'aged-content-message' ); } ?> ', esc_attr( (string) $value ) ); ?>

%s' ), array( 'code' => array(), ) ); ?>

%s' ), array( 'code' => array(), ) ); ?>

%1$s', '%2$s' ), array( 'code' => array(), ) ); ?>

Aged Content Message has been activated. Edit your settings in order to see the actual notice displayed on your site.', 'aged-content-message' ), esc_url( aged_content_message__admin_get_settings_page_url() ) ); // Print notice. printf( '

%s

', wp_kses_post( $message ) ); // Prevent annoyance. update_option( 'aged_content_message__status', 'dismissed' ); } /** * Preview section. * * @return void */ function aged_content_message__settings_preview() { $options = aged_content_message__get_settings(); $age = absint( $options['min_age'] ); $css = wp_kses_post( $options['css'] ); ?>