WordPress custom widgets

Στο cssigniter.com έχουμε αναπτύξει μια σειρά από custom widgets. Flickr, Twitter κ.α. Κάθε νέο widget που φτιάχνουμε μπαίνει σε ένα φάκελο /widgets στο μικρό μας framework και έτσι κάθε φορά που φτιάχνουμε ένα νέο theme απλά κρατάμε τα widgets που είναι απαραίτητα για το συγκεκριμένο theme και τα ενεργοποιούμε στο functions.php

Όμως, επειδή κάθε widget στην ουσία πρόκειται για ένα αρχείο .php για να μην χάνουμε τη μπάλα ενεργοποιούμε όλα τα widgets αυτόματα με ένα μικρό php script. Έχουμε λοιπόν στο functions.php την εξής δήλωση:


require_once('functions/ci_widgets.php');

Αυτό σημαίνει πως μέσα στο theme folder υπάρχει ένας φάκελος που λέγεται /functions και εκεί μέσα υπάρχει το script με το όνομα ci_widgets.php. Τι κάνουμε εκεί μέσα:

$path = dirname(__FILE__).'/widgets';

if ($handle = opendir($path)) {
    while (false !== ($file = readdir($handle))) {
		if ($file != "." && $file != "..") {
        	$file_info = pathinfo($path.'/'.$file);
        	if($file_info['extension']=='php')
        		require_once($path.'/'.$file);
        }
    }
	closedir($handle);
}

Λέμε λοιπόν να πάει να κοιτάξει σε ένα ακόμα φάκελο που υπάρχει μέσα στο theme μας με το όνομα /widgets και εκεί να ψάξει να βρεί όλα τα αρχεία με κατάληξη .php και φυσικά να τα κάνει include (require_once). Easy eh? Δείτε τη παρακάτω εικόνα για να δείτε και τη δομή των φακέλων σε ένα cssigniter theme:

1 comment

  1. Έξυπνο το snippet! Μ’ αρέσει που κρατάτε “καθαρό” το theme folder έχοντας μια Χ λογική σε αρχεία/φακέλους.

    Έχω φρίξει βλέποντας themes εταιρειών που υποτίθεται ότι είναι κορυφαίες στον χώρο των premium themes. Καμία συνοχή, λογική και σε μερικές περιπτώσεις κώδικας γρήγορα γραμμένος…

    Keep up the good work 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *