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();
?>