Search code examples
phpwordpressglob

WordPress php glob(); not working?


I have created a function in WordPress where I wish to obtain all the images within a given directory, for which I am using the PHP glob function, for some reason I cannot get this to work, is the glob() function disabled for use within WordPress?

The Code that Doesn't Work...

function getAccreditaionLogos(){

    define('ACCREDPATH', get_stylesheet_directory_uri() . '/img/accreditations/');

    $images = glob(ACCREDPATH . '*.png');
    foreach($images as $key => $img):
        $get_icons = '<li><img src="'.$img.'" /></li>';
        echo $get_icons;
    endforeach;
}

Solution

  • The function get_stylesheet_directory_uri() gives you a web url ( http://… ) . You have to use an absolute system path. You can get it by using the get_theme_root() function instead.

    Your function should look like this:

    function getAccreditaionLogos(){
    
        define('ACCREDPATH', get_theme_root() . '/img/accreditations/');
    
        $images = glob(ACCREDPATH . '*.png');
        foreach($images as $key => $img):
            $get_icons = '<li><img src="'.$img.'" /></li>';
            echo $get_icons;
        endforeach;
    }
    

    More details of this function in the Wordpress Codex.