Come creare un elenco di file in WordPress

Creare un elenco di file presenti sul nostro sito in WordPress è un'operazione che può essere delegata ad un semplice shortcode. Vediamo come fare.

Il seguente codice utilizza gli iteratori di directory di PHP per estrarre il percorso dei file da una directory a scelta e restituire degli URL assoluti.

Aggiungete il codice al file functions.php del vostro tema:


function search_dir($dir){

  $pages = array();
  
  foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir)) as $file) {

    if ($file->isFile() && $file->isReadable()) {
  
      if(preg_match('/\.zip$/', $file)) {
        
        $zip = $file->getPathname();
        
        $pages[] = $zip;
      
      }
      
      if(preg_match('/\.pdf$/', $file)) {
            	  
      	  	$pdf_doc = $file->getPathname();
      	  	
      	        	  	
      	  	$pages[] = $pdf_doc;
      	  		
      
      }
  
    }


  }
  
  return $pages;
}

function sort_by_date($a, $b){
     
     $time1 = filectime($a);
     $time2 = filectime($b);
     
     return $time1 < $time2;
     
     
}

function directory_listing($atts) {

	extract( shortcode_atts( array(
		'dir' => ''
	), $atts ) );

	$files = search_dir($_SERVER['DOCUMENT_ROOT'] . '/' . $dir);
	usort($files, 'sort_by_date');
	
	$html = '
    ' . "\n"; foreach($files as $file) { $uri = substr_replace($file, '', 0, strlen($_SERVER['DOCUMENT_ROOT'])); $full_url = 'http://' . $_SERVER['HTTP_HOST'] . $uri; $html .= '
  • ' . $file . '
  • ' . "\n"; } $html .= '
' . "\n"; return $html; } add_shortcode('directory', 'directory_listing');

Quindi possiamo usare il seguente shortcode:

[directory dir="documenti"]

Le due espressioni regolari usate, ossia:

/\.zip$/
/\.pdf$/

selezionano file ZIP e PDF. È sufficiente modificare queste espressioni regolari per selezionare altri tipi di file.

Torna su