In WordPress è semplice creare uno shortcode per ottenere un listato di directory.
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:
<?php
function my_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 my_sort_by_date( $a, $b ) {
$time1 = filectime($a);
$time2 = filectime($b);
return $time1 < $time2;
}
function my_directory_listing( $atts ) {
extract( shortcode_atts( array(
'dir' => ''
), $atts ) );
$files = my_search_dir( $_SERVER['DOCUMENT_ROOT'] . '/' . $dir );
usort( $files, 'my_sort_by_date' );
$html = '<ul>' . "\n";
foreach($files as $file) {
$uri = substr_replace( $file, '', 0, strlen( $_SERVER['DOCUMENT_ROOT'] ) );
$full_url = 'http://' . $_SERVER['HTTP_HOST'] . $uri;
$html .= '<li><a href="' . $full_url . '">' . $file . '</a></li>' . "\n";
}
$html .= '</ul>' . "\n";
return $html;
}
add_shortcode( 'directory', 'my_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.