Supporto » Sviluppare con WordPress » elencare contenuto cartella privata in uploads

  • Salve vorrei elencare tutte le mie immagini che si trovano in questa cartella.
    /wp-content/uploads/photo/album-1 .

    Per ora ho scritto questo:

    <?php
                $upload_dir = wp_upload_dir();
                echo '<li><a href="'.$upload_dir['baseurl'].'/photo/album-1/big/1.jpg" class="big"><img src="'.$upload_dir['baseurl'].'/photo/album-1/1.jpg" class="img-fluid mx-auto d-block img-zoom"></li></a>';
              ?>

    Non mi dite di usare plugin già fatti .. vorrei farmi da solo un mio plugin perché mettendo direttamente gli url dentro a img e a href , lo script funziona.
    Ma vorrei fare un modo che mi elencasse tutto dentro la cartella ho pensato di usare glob. Ma non riesco ad ricavare bene il percorso.

    Avete idea?

    Grazie mille.

Stai vedendo 1 repliche (di 1 totali)
  • Ciao @lamorfini,

    Prova a dare uno sguardo a questa funzione, è abbozzata ma fa il suo lavoro.
    Testata con php 7.2 quindi in caso di problemi devi trovare soluzioni ad eventuali versioni di php che vuoi supportare.

    
    function showPhotos()
    {
        $uploadDir = (object)wp_get_upload_dir();
        $directoryIterator = new \RecursiveDirectoryIterator(
            untrailingslashit($uploadDir->basedir) . '/photo/album-1/',
            \FilesystemIterator::SKIP_DOTS
        );
        $iteratorIterator = new \RecursiveIteratorIterator($directoryIterator);
        $imageIterator = new \RegexIterator($iteratorIterator, '/.jpg|.png$/');
    
        if (!iterator_count($imageIterator)) {
            return;
        }
    
        echo '<ul>';
        /** @var \SplFileInfo $fileInfo */
        foreach ($imageIterator as $fileInfo) {
            $url = str_replace($uploadDir->basedir, $uploadDir->baseurl, $fileInfo->getPathname());
            printf(
                '<li><a href="%1$s" class="big"><img src="%1$s" class="img-fluid mx-auto d-block img-zoom" /></a></li>',
                esc_url($url)
            );
            break;
        }
        echo '</ul>';
    }
    
    • Questa risposta è stata modificata 2 settimane, 3 giorni fa da  Guido Scialfa.
Stai vedendo 1 repliche (di 1 totali)
  • Devi essere collegato per rispondere a questo topic.