Creeaza primul tau plugin WordPress

Plugin-urile WordPress sunt scripturi care au rolul de a modifica site-ul tau. Aceste schimbari se refera de la cele mai simple care modifica mici parti din header pana la cele mai complicate care declanseaza trimiterea email-urilor, etc.

Diferenta dintre o tema WordPress si un plugin WordPress este ca tema este folosita pentru a schimba aspectul site-ului web in timp ce plugin-urile au rolul de a schimba modul de functionare.

Primul plugin

Un prim pas in realizarea unui plugin este crearea unui folder, urmand alcatuirea unui singur fisier cu o singura linie de continut. Acest lucru il poti efectua in folderul wp-content/plugins in care vei crea un nou folder care se poate numi, de exemplu greatplugin. In acest folder, alcatuieste un fisier numit greatplugin.php. Ca si un pas urmator e necesar sa deschizi fisierul intr-un editor de text in care sa lipesti urmatoarea informatie:

<?php    
/*    
Plugin Name: Pluginul meu cool    
Plugin URI: http://pluginul-meu-cool.ro    
Description: Descriere plugin cool    
Version: 1.0    Author: Sandor Kovacs    
Author URI: https://www.sandorkovacs.ro    
License: GPL2    
*/ 
?>

Daca intentionezi sa distribui plugin-ul tau, e important de retinut ca ar fi bine sa adaugi cat mai multe date posibile, dar daca nu, numele plugin-ului este de ajuns.

Acum, iti poti activa plugin-ul din back-end, desi momentan nu face nimic.

Structura plugin-ului

In cazul in care plugin-ul tau se adreseaza in special unei clase principale, pune aceea clasa in fisierul principal al plugin-ului, iar pentru alte functionalitati adauga fisiere diferite. Daca plugin-ul tau dezvolta partea de back end a WordPress-ului avand comenzi personlizate, poti creea fisierele JavaScript si CSS pentru a stoca fisierele adecvate.

Good to know! In crearea unor functionalitati complexe, e de preferat sa iti iparti plugin-ul in fisiere si foldere mutiple. De asemenea, e important sa gasesti o balanta intre gradul de utilizare, structura layout-ului si minimalismul.

Numele si functionalitatile plugin-ului

In realizarea unui plugin, o parte importanta careia sa-i acorzi mai multa atentie, este denumirea plugin-ului, functionalitatilor si claselor. Este necesar pentru a nu avea functionalitati similare care au nume aproape identince.

Una dintre cele mai folosite solutii este folosirea anumitor prefixe, scazand mult posibilitatea de a avea aceleasi denumiri ca si altcineva.

Securitatea plugin-ului

Securitatea online este unul dintre cei mai importanti factori, iar aceasta regula se aplica si in cazul realizarii unui plugin, in special daca doresti sa il distribui.

In ceea ce priveste securitatea unui plugin, aceasta se bazeaza pe doi piloni: unul care se asigura ca plugin-ul nu raspandeste date stricate si al doilea pilon care permite utilizatorului sa efectueze anumite actiuni.

Poate pare mai complicat, dar WordPress ofera multiple functionalitati pentru a duce la bun sfarsit crearea unui plugin.

Lasa ordine in urma ta

O problema cu multe plugin-uri este ca in urma lor lasa multe date care nu sunt necesare. Astfel de date sunt utilizate doar de plugin-uri si care ajung a fi o greutate in plus, daca plugin-ul nu curata dupa el.

Pentru acest proces, WordPress ofera trei hooks:

 

  • Register_activation_hook () – Acest hook iti permite sa realizezi o functionalitate care functioneaza in timp ce plugin-ul tau este activat.
  • Register_deactivation_hook () – Functioneaza ca o replica a hook-ului mai sus mentionat, dar doar atunci cand plugin-ul este dezactivat.
  • Register_unistall_hook () – Aceasta functioneaza doar cand administratorul site-ului sterge plugin-ul tau in back end. E o metoda eficienta pentru a elimina datele in plus.

 

Documentatie si standarde de codare

In cazul in care dezvolti plugin-uri pentru comunitati mari, atunci a face documentatie codului tau este considerat ca fiind un gest de bune maniere si totodata e eficient pentru business.

A face documentatie codului tau e un obicei eficient chiar daca il folosesti in mare parte in scopuri personale. In acest fel, vei avea o evidenta rolul fiecarei functionalitati, chiar daca a fost scris cu luni in urma.

De asemenea, pe langa documentatie, respectarea standardelor de codare sunt importante, pentru a se conforma cu instructiunile WordPress-ului.

Practica e mama invataturii!

Ca dupa orice teorie, practica e modalitatea prin care poti observa daca intr-adevar ai inteles. Pentru aceasta vom realiza un plugin care atrage mai multa popularitate articolelor prin stocarea tuturor datelor de vizionare a fiecarei postare.

Planificare din timp

Inainte de scrierea propriu-zisa a codurilor, e important sa te gandesti si sa incerci sa determini fiecare functionalitate de care plugin-ul are nevoie. De exemplu:

  • O functionalitate care inregistreaza fiecare vizualizare pe care o postare o are;
  • O functionalitate care permite sa recuperezi numarul burt de vizualizari;
  • O functionalitate care restabileste o lista de postari in functie de numarul de vizualizari;
  • O functionalitate care ne arata numarul de vizualizari a fiecarui utilzator.

Pregatirea functionalitatilor

Primul pas este crearea folder-ului si structura fisierului. In folderul plugins poti alcatui un folder numit great_popular, iar dupa creaza un fisier numit great_popular.php. Dupa ce deschizi fisierul poti copia urmatoarele:

<?php    
/*    
Plugin Name: Pluginul meu cool    
Plugin URI: http://pluginul-meu-cool.ro    
Description: Descriere plugin cool    
Version: 1.0    Author: Sandor Kovacs    
Author URI: https://www.sandorkovacs.ro    
License: GPL2    
*/ 
?>

Inregistrarea numarul de vizualizari ale postarilor

Daca se poate gasi gasi o functionalitate WordPress care sa ruleze atunci cand o postare este vizualizata, mai e nevoie doar de scrierea functionalitatii care inregistreaza numarul de vizualizari si dupa se face hook.

/**
* Adds a view to the post being viewed
*
* Finds the current views of a post and adds one to it by updating
* the postmeta. The meta key used is "awepop_views".
*
* @global object $post The post object
* @return integer $new_views The number of views the post has
*
*/
function awepop_add_view() {
  if(is_single()) {
     global $post;
     $current_views = get_post_meta($post->ID, "awepop_views", true);
     if(!isset($current_views) OR empty($current_views) OR !is_numeric($current_views) ) {
        $current_views = 0;
     }
     $new_views = $current_views + 1;
     update_post_meta($post->ID, "awepop_views", $new_views);
     return $new_views;
  }
}

 

Recuperarea si dezvaluirea vizualizarilor

Folosirea unei functionalitati mai mult de o data poate crea redundanta, dar in acest caz promoveaza gandirea orientata spre obiect, care ofera si flexibilitate in dezvoltarea plugin-ului:

/**
* Retrieve the number of views for a post
*
* Finds the current views for a post, returning 0 if there are none
*
* @global object $post The post object
* @return integer $current_views The number of views the post has
*
*/
function awepop_get_view_count() {
  global $post;
  $current_views = get_post_meta($post->ID, "awepop_views", true);
  if(!isset($current_views) OR empty($current_views) OR !is_numeric($current_views) ) {
     $current_views = 0;
  }

  return $current_views;
}

 

Pentru dezvaluirea vizualizarilor se poate folosi urmatoarea functionalitate:


/**
* Shows the number of views for a post
*
* Finds the current views of a post and displays it together with some optional text
*
* @global object $post The post object
* @uses awepop_get_view_count()
*
* @param string $singular The singular term for the text
* @param string $plural The plural term for the text
* @param string $before Text to place before the counter
*
* @return string $views_text The views display
*
*/
function awepop_show_views($singular = "view", $plural = "views", $before = "This post has: ") {
  global $post;
  $current_views = awepop_get_view_count();

  $views_text = $before . $current_views . " ";

  if ($current_views == 1) {
     $views_text .= $singular;
  }
  else {
     $views_text .= $plural;
  }

  echo $views_text;

}

 

Lista cu postarile in functie de numarul de vizualizari

Pentru ca lista cu postarile in functie de numarul de vizualizari sa fie disponibila, e necesar sa dezvolti o functionalitate care poate fi plasata oriunde in tema site-ului.

/**
* Displays a list of posts ordered by popularity
*
* Shows a simple list of post titles ordered by their view count
*
* @param integer $post_count The number of posts to show
*
*/
function awepop_popularity_list($post_count = 10) {
 $args = array(
   "posts_per_page" => 10,
   "post_type" => "post",
   "post_status" => "publish",
   "meta_key" => "awepop_views",
   "orderby" => "meta_value_num",
   "order" => "DESC"
 );
 
 $awepop_list = new WP_Query($args);
 
 if($awepop_list->have_posts()) { echo "
<ul>"; }
 
 while ( $awepop_list->have_posts() ) : $awepop_list->the_post();
   echo '
<li><a href="'.get_permalink($post->ID).'">'.the_title('', '', false).'</a></li>

';
 endwhile;
 
 if($awepop_list->have_posts()) { echo "</ul>

";}
}

Pentru a adauga precautiune, poti adauga aceasta functionalitate in tema ta:

if (function_exists("awepop_popularity_list")) {
  awepop_popularity_list();
}

 

In acest fel, daca plugin-ul este dezactivat, iar functionalitatile nedefinite, PHP nu va arata o eroare a site-ului, ci doar lista nu va fi disponibila.

Daca iti doresti sa inveti cum sa dezvolti primul tau plugin, sa inveti programare de la zero, si nu numai, alaturat gasesti datele mele de contact!

Lasă un răspuns

Completează mai jos detaliile despre tine sau dă clic pe un icon pentru autentificare:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare / Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare / Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare / Schimbă )

Fotografie Google+

Comentezi folosind contul tău Google+. Dezautentificare / Schimbă )

Conectare la %s