'', /* 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 );
?>