CREAZIONE PLUGIN

Per quanto possa essere raro dover creare un plugin, farlo è molto semplice. Un plugin non è altro che del codice che viene eseguito indipendentemente dal tema.

Per creare un plugin basta creare una cartella con il nome del plugin, senza spazi, ed inserire al suo interno un file php con lo stesso nome della cartella e le solite righe di commento obbligatorie. Vediamo un esempio :

<?
/*
Plugin Name: Custom Post Show-Filter
Version: 1.0
Description: Plugin che estrae i custom custom post type con possibilità di filtri lato frontend
Author: Artera
*/

define( 'MY_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );
// /home/nomeutente/sito.com/public_html/wp-content/plugins/my_plugin/

define( 'MY_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
// http://sito.com/wp-content/plugins/my_plugin/

require_once( MY_PLUGIN_PATH . 'core/custom_functions.php' );

require_once( MY_PLUGIN_PATH . 'core/core_backend.php' );

require_once( MY_PLUGIN_PATH . 'core/core_frontend.php' );

In questo esempio, nel file principale importo poi dei file secondari in base a quello che devo fare. Ad esempio la parte visualizzata nel backend

<?php

wp_enqueue_style( 'custom_backend_css', MY_PLUGIN_URL . 'css/style.css');
wp_enqueue_script('custom_frontend_js', MY_PLUGIN_URL . 'js/custom_frontend.js', array('jquery'), '1.0', true);

// FILE PER GESTIONE DEL BOTTONE PER AGGIUNGERE SHORTOCODE DA UI (SI ATTACCA A FUSION BUILDER)
function include_media_button_js_file() {
    wp_enqueue_script('custom_backend_js', MY_PLUGIN_URL . 'js/custom_backend.js', array('jquery'), '1.0', true);
}

add_action('wp_enqueue_media', 'include_media_button_js_file');

function create_cont_custom_shortcode() {
?>

<div class="cont-custom-shortcode"></div>
	<div class="cont-interno-shortcode">
		<table>
			<tr>
				<td>Post type
					<span>Select post type</span>
				</td>
				<td>
					<select id="shortcode_post_type">
						<option value="qrpcourses">Courses</option>
						<option value="qrpbooks">Books</option>
						<option value="qrpdownloads">Downloads</option>
					</select>
				</td>
			</tr>
			<tr>
				<td>Method
					<span>Select Method if you want to filter for this</span>
				</td>
				<td>
					<select id="shortcode_category1_slug">
						<option value="">All</option>
						<?php
							$subcategories = get_categories( array(
							'orderby' => 'name',
							'taxonomy' => "methodology"
							) );

							foreach ( $subcategories as $subcategory ) {
									echo "<option value='".$subcategory->slug."'>".$subcategory->name."</option>";
							}
						?>
					</select>
				</td>
			</tr>
			<tr>
				<td>Level
					<span>Select Level if you want to filter for this. Not for downloads</span>
				</td>
				<td>
					<select id="shortcode_category2_slug">
						<option value="">All</option>
						<?php
							$subcategories = get_categories( array(
							'orderby' => 'name',
							'taxonomy' => "sub_methodology"
							) );

							foreach ( $subcategories as $subcategory ) {
									echo "<option value='".$subcategory->slug."'>".$subcategory->name."</option>";
							}
						?>
					</select>
				</td>
			</tr>
			<tr>
				<td>View type
					<span>Select view type. <strong>Blocks works only for books and downloads</strong></span>
				</td>
				<td>
					<select id="shortcode_books_view">
						<option value="table">Table</option>
						<option value="blocks">Blocks</option>
					</select>
				</td>
			</tr>
			<tr>
				<td>Show filters
					<span>Select if you want to show filters before list</span>
				</td>
				<td>
					<select id="shortcode_show_filter">
						<option value="no">No</option>
						<option value="yes">Yes</option>
					</select>
				</td>
			</tr>
			<tr>
				<td>Show link
					<span>Select if you want to show links to single element in table/blocks list view</span>
				</td>
				<td>
					<select id="shortcode_show_link">
						<option value="yes">Yes</option>
						<option value="no">No</option>
					</select>
				</td>
			</tr>
		</table>
		<div class="cont-interno-shortcode-bottoni clearfix">
			<button id="insert-custom-shortcode" class="button-primary button-large">Insert</button>
			<button id="close-custom-shortcode" class="button-primary button-large">Close</button>
		</div>
	</div>
<?
}

add_filter('admin_footer', 'create_cont_custom_shortcode');

ed il cuore vero e proprio del plugin che di solito viene poi richiamato dal tema o da un widget o da codice custom tramite shortcode

<?php

/**
* SHORTCODE PER LISTA CORSI
* @param array $atts Array di parametri dello shortcode (vedi poco sotto)
* @return string
*/

function generate_filters($atts){

...

}

add_shortcode( 'generate_filters', 'generate_filters' );

[/vc_column_text][/vc_column][/vc_row][vc_row type=”in_container” full_screen_row_position=”middle” scene_position=”center” text_color=”dark” text_align=”left” overlay_strength=”0.3″][vc_column column_padding=”no-extra-padding” column_padding_position=”all” background_color_opacity=”1″ background_hover_color_opacity=”1″ tablet_text_alignment=”default” phone_text_alignment=”default”][vc_column_text]

ESERCIZI

  1. Creare un plugin che tramite shortcode scritto in un widget, stampi qualsiasi cosa a video