Co to jest plugin?
Plugin w kontekście motywu WP jest rozszerzeniem funkcjonalności i możliwości motywu. Wyróżniane są conajmniej dwa rodzaje pluginów: widgety oraz pluginy zewnętrzne. Pluginy są przechowywane w folderze plugins instalacji WP, choć możliwa jest inkorporacja pluginów do motywów.
Co robi nasz plugin?
Plugin będzie wklejał linki url określone przez zalogowanego użytkownika na posty i page WP. Plugin umożliwia zmianę kolorów linka oraz włączenie animacji linka.

Funkcjonalość i specyfikacja pluginu.
Z pluginem będzie można się kontaktować za pomocą panelu administracyjnego, efekty pracy pluginu będzie można implementować za pomocą mechanizmu shortcodów WP , choć istnieje również możliwość ręcznej implementacji działania pluginu w dowowlnym miejscu w kodzie za pomacą funkcji do_shortcode(). Plugin będzie opierał się o mechanizm klas php aby pokazać prosty sposób na implementacje klas w pluginach WP

<?php
/*
* Plugin Name: Wklej Link Class
* Plugin URI: https://www.websitecreator.pl
* Description: Wklej link CLASSSS
* Version: 1.0
* Author: Pawel Kalisz
* Author URI:https://websitecreator.pl
* License:MIT
*/

class Paste_Link_Plugin{

private $classoptionplugin_options;

public function __construct() {

//rejestracja menuadmin
add_action(‚admin_menu’, array($this, ‚wklej_link_add_admin_menu’));
//options init
add_action(‚admin_init’, array($this, ‚wklej_link_settings_init’ ));
//shortcode
add_shortcode(‚paste-wklej-link’, array($this, ‚add_link_shortcode’));

//rejestracja JQ
$this->classoptionplugin_options = get_option( ‚option_settings’ );
$checkbox = $this->classoptionplugin_options[‚ratio_radio_field_0’];

if($checkbox){
add_action(‚wp_enqueue_scripts’, array($this, ‚wklej_link_jq_load’));}
//styles
add_action(‚wp_enqueue_scripts’,  array($this,’wklej_link_register_plugin_styles’));
}

public function add_link_tempalte_tage() {?>

<div>
<h2>wklej link</h2>
<p>
<?php
//pobranie opcji dla urla (input)
$this->classoptionplugin_options = get_option( ‚option_settings’ );
$url = $this->classoptionplugin_options[‚id_input_text_field_0’];

//pobranie opcji dla koloru (select)
// $this->classoptionplugin_options = get_option( ‚option_settings’ );
$color = $this->classoptionplugin_options[‚id_select_field_1’];

switch ($color) {
case ‚1’:
echo ‚<div class="animate"><p><a style="color:red" target="_blanket" href="’.esc_url($url).’">’.esc_url($url).'</a></p><br></div>’;
break;
case ‚2’:
echo ‚<div class="animate"><p><a style="color:blue" target="_blanket" href="’.esc_url($url).’">’.esc_url($url).'</a></p><br></div>’;
break;
case ‚3’:
echo ‚<div class="animate"><p><a style="color:green" target="_blanket" href="’.esc_url($url).’">’.esc_url($url).'</a></p><br></div>’;
break;
case ‚4’:
echo ‚<div class="animate"><p><a style="color:black" target="_blanket" href="’.esc_url($url).’">’.esc_url($url).'</a></p><br></div>’;
break;
}
?>
</div>

<?php }

///////////////////////////////////////////////////////////////////////////////////////////////////////

///koniec tempalte tags
//////tworzenie shortcode/////////////////////
public function add_link_shortcode($add_link_shortcode){

$add_link_shortcode ='<div><strong>shortcode</strong>’.$this->add_link_tempalte_tage().'</div>’;
return $add_link_shortcode;
}

function wklej_link_add_admin_menu(  ) {

add_menu_page(
‚Wklej link’,
‚wklej link’,
‚manage_options’,
‚wklej-link’,
array( $this, ‚callback_options_page’ ), // function
‚dashicons-admin-generic’, // icon_url
3 // position
);

}

public function callback_options_page(  ) {

$this->classoptionplugin_options = get_option( ‚option_settings’ );
settings_errors(); ?>

<form action=’options.php’ method=’post’>

<h2>wklej link</h2>

<?php
settings_fields( ‚optionGroup’ );
do_settings_sections( ‚optionGroup’ );
submit_button();
?>

</form>

<?php

}

public function wklej_link_settings_init(  ) {

register_setting( ‚optionGroup’, ‚option_settings’ );

add_settings_section(
‚wklej_link_id_section’,
‚Opis sekcji wklej link’ ,
array( $this, ‚wklej_link_section_callback’ ),
‚optionGroup’
);

add_settings_field(
‚id_input_text_field_0’,
‚Wklej tutaj swój link url’ ,
array( $this, ‚callback_text_field_0_render’ ),
‚optionGroup’,
‚wklej_link_id_section’
);

add_settings_field(
‚id_select_field_1’,
‚Wybierz kolor dla swojego linku url’ ,
array( $this, ‚callback_select_field_1_render’ ),
‚optionGroup’,
‚wklej_link_id_section’
);
add_settings_field(
‚ratio_radio_field_0’,
‚Włącz animacje’,
array( $this, ‚ratio_radio_field_0_render’ ),
‚optionGroup’,
‚wklej_link_id_section’
);
}

public function callback_text_field_0_render(  ) {

//$options = get_option( ‚option_settings’ );
?>

<textarea name=’option_settings[id_input_text_field_0]’
value='<?php echo $this->classoptionplugin_options[‚id_input_text_field_0′];?>’>
<?php echo esc_url( $this->classoptionplugin_options[‚id_input_text_field_0’]);?>
</textarea>

<?php

}

public function callback_select_field_1_render(  ) {

//$options = get_option( ‚option_settings’ );
?>
<select name=’option_settings[id_select_field_1]’>
<option value=’1′ <?php selected($this->classoptionplugin_options[‚id_select_field_1′], 1 ); ?>>kolor czerwony</option>
<option value=’2’ <?php selected($this->classoptionplugin_options[‚id_select_field_1′], 2 ); ?>>kolor niebieski</option>
<option value=’3’ <?php selected( $this->classoptionplugin_options[‚id_select_field_1′], 3 ); ?>>kolor zielony</option>
<option value=’4’ <?php selected( $this->classoptionplugin_options[‚id_select_field_1’], 4 ); ?>>kolor czarny</option>
</select>

<?php

}

public function ratio_radio_field_0_render(  ) {

//    $options = get_option( ‚option_settings’ );
?>
<input type=’checkbox’
name=’option_settings[ratio_radio_field_0]’ <?php checked( $this->classoptionplugin_options[‚ratio_radio_field_0’], 1 ); ?> value=’1’/>
<?php

}

public function wklej_link_section_callback(  ) {

echo ‚description of wklej link’ ;

}

// $this->classoptionplugin_options = get_option( ‚option_settings’ );
// $radio_button1 = $this->classoptionplugin_options[‚ratio_radio_field_0’];

function wklej_link_jq_load() {
wp_deregister_script( ‚jquery’ );
wp_register_script( ‚jquery’, ‚http://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js’);
wp_enqueue_script( ‚jquery’ );
wp_enqueue_script(‚my-jqyery’, plugins_url(‚/js/scripts.js’, __FILE__), array(‚jquery’) );
}

public function wklej_link_register_plugin_styles(){
wp_register_style(‚wklej-link-styles’, plugins_url(‚styles/styles.css’, __FILE__));
wp_enqueue_style(‚wklej-link-styles’);
}

}//koniec klasy
$Paste_Link_Plugin = new Paste_Link_Plugin();

?>