'', /* Label to prepend */ 'addlinktosite' => false, /* Link to site instead of page/post */ 'addsitename' => false, /* Add site title to link text */ 'breaks' => 2, /* Number of
tags to insert before the link */ 'cleartext' => false, /* Don't let user copy my content */ 'reloption' => 'na', /* Add a rel attribute to link */ 'replaced_text' => '', /* Replace copied text with */ 'target' => false, /* Open link in new window/tab */ 'usesitenameaslink' => true, /* Add site title as a separate link */ 'usetitle' => false, /* Use page/post title as link text */ ); private $option_name = 'ftAddlink_options'; private $rel_attr = array( 'na' => 'Don\'t add (Recommended)', 'canonical' => 'Canonical', 'nofollow' => 'No follow (Not recommended)', ); // constructor function __construct() { /* if condition below is not required since it's an option page under WP Settings menu*/ //if ( is_admin() ){ add_action( 'admin_menu', array( &$this, 'ftAddlink_menu' ) ); add_action( 'admin_init', array( &$this, 'ftAddlink_admininit' ) ); //} add_action( 'init', array( &$this, 'ftAddlink_init' ) ); add_action( 'wp_head', array( &$this, 'add_script' ) ); } // function for init action hook function ftAddlink_init() { load_plugin_textdomain( 'add-link-copied-text', false, basename( dirname( __FILE__ ) ) . '/languages/' ); $this->defaults['readmore'] = __( 'Continue reading at', 'add-link-copied-text' ); } // adding menu item in admin menu function ftAddlink_menu() { add_options_page( ucwords( esc_html__( 'Add link Settings', 'add-link-copied-text' ) ), esc_html__( 'Add Link', 'add-link-copied-text' ), 'manage_options', $this->option_name, array( $this, 'ftAddlink_display_settings' ) ); } //register_setting( $option_group, $option_name, $sanitize_callback ); function ftAddlink_admininit() { register_setting( $this->option_name, $this->option_name, array( $this, 'options_validate' ) ); } function options_validate( $input ) { $valid = array(); $valid['readmore'] = isset( $input['readmore'] ) ? sanitize_text_field( $input['readmore'] ) : $this->defaults['readmore']; $valid['breaks'] = isset( $input['breaks'] ) ? sanitize_text_field( $input['breaks'] ) : $this->defaults['breaks']; $valid['replaced_text'] = isset( $input['replaced_text'] ) ? $input['replaced_text'] : $this->defaults['replaced_text']; $valid['reloption'] = isset( $this->rel_attr[ $input['reloption'] ] ) ? $input['reloption'] : $this->defaults['reloption']; $fields = array( 'addlinktosite', 'usetitle', 'cleartext', 'target' ); foreach ( $fields as $field ) { $valid[ $field ] = isset( $input[ $field ] ) ? (bool) $input[ $field ] : false; } $valid['usesitenameaslink'] = isset( $input['usesitenameaslink'] ) && ! $valid['addlinktosite'] ? (bool) $input['usesitenameaslink'] : false; $valid['addsitename'] = isset( $input['addsitename'] ) && ! $valid['usesitenameaslink'] ? (bool) $input['addsitename'] : false; if ( ! ( ctype_digit( $valid['breaks'] ) || is_int( $valid['breaks'] ) ) || (int) $valid['breaks'] < 0 ) { // if ( strlen( $valid['breaks'] ) == 0 || $valid['breaks'] < 0 ) { add_settings_error( 'breaks', // Setting title 'breaks_texterror', // Error ID esc_html__( 'Please enter a valid integer number', 'add-link-copied-text' ), // Error message 'error' // Type of message ); $valid['breaks'] = $this->defaults['breaks']; } return $valid; } function ftAddlink_display_settings() { $options = wp_parse_args( get_option( $this->option_name, $this->defaults ), $this->defaults ); ?>

option_name ); ?> > >
:
:
: />
:
: />
: />
: />
: />
:


:


/>
option_name, $this->defaults ), $this->defaults ); /* Not escaping data since wp_localize_script() decodes HTML entities and wp_json_encode also does kind of sanitization. Entity encoding moved to JS. */ $params = wp_parse_args( array( 'sitename' => get_bloginfo( 'name' ), 'siteurl' => get_bloginfo( 'url' ), 'frontpage' => is_home() || is_front_page() ), $options ); if ( $options['usetitle'] === true ) { if ( is_home() || is_front_page() ) { $params['pagetitle'] = $params['sitename']; $params['addsitename'] = false; } if ( is_singular() ) { global $post; $params['pagetitle'] = get_the_title( $post->ID ); } } $params['replaced_text'] = nl2br( $params['replaced_text'] ); wp_localize_script( 'add_linkoncopy', 'astx_add_link_copied_text', $params ); } } // class ends here $ftAddlink = new ftAddlink(); }// top most if condition ends here