使用PHP DirectoryIterator加载更多按钮?

时间:2017-04-01 01:10:12

标签: php ajax wordpress

我的WordPress网站中有许多“图片库”样式页面。我试图找出是否有可能使用我正在使用的方法创建一个“加载更多”按钮,以便一次只加载15个(例如,可以是任何)缩略图。

要收集应该显示的文件,我正在使用PHP的DirectoryIterator。我为每个页面使用相同的自定义函数,但函数本身有点冗长而且凌乱。基本上,我需要能够将文件放入适当的目录并自动检测它们,并显示缩略图,并附带指向全尺寸图像的链接。

我已经有了这个设置和工作。该函数的一半还检查任何子目录,并为这些子目录重复该过程,这样我就可以在一个页面上创建任意数量的“图库”,每个图库只需创建目录和上传文件。

这是相当长的,但作为参考我觉得我需要在问这个问题时粘贴完整的功能,以便人们知道我在做什么。我正在使用的内容类型是视频游戏截图。

function display_screenshots() {
  global $post;
  $post_data = get_post($post->post_parent);
  $parent_slug = $post_data->post_name;
  $img_directory = '/wp-content/uploads/screenshots/' . $parent_slug . '/';
  $thumb_directory = '/wp-content/uploads/screenshots/' . $parent_slug . '/thumb/';
  $img_list_directory = getcwd() . '/wp-content/uploads/screenshots/' . $parent_slug . '/';
  if(is_dir($img_list_directory)) {
    $found_shots = array();
    echo '<div class="screenshot-thumbs-outer">';
    echo '<div class="screenshot-thumbs-inner">';
    foreach(new DirectoryIterator($img_list_directory) as $file) {
        if ($file->isDot()) continue;
        $fileName = $file->getFilename();
        $filetypes = array(
            "png",
            "PNG"
        );
        $filetype = pathinfo($file, PATHINFO_EXTENSION);
        if (in_array(strtolower($filetype), $filetypes )) {
            $found_shots[] = array( 
                "fileName" => $fileName
            );       
        }
    }
    asort($found_shots);
    foreach($found_shots as $file) {
        $filename = $file['fileName'];
        $thumbname = substr($filename, 0, -3).'jpg';
        echo '<a href="#" data-featherlight="'.$img_directory.$filename.'" rel="nofollow">';
        echo '<img src="'.$thumb_directory.$thumbname.'"/>';
        echo '</a>';
    }
    echo '</div>';
    echo '</div>';
  }
  if(is_dir($img_list_directory)) {
    foreach(new DirectoryIterator($img_list_directory) as $dir) {
        if($dir->isDir() && $dir != '.' && $dir != '..' && $dir != 'thumb') {
            $dir_h2 = substr($post->post_title, 0, -12) . ' - ' . str_replace(array('Hd ', ' Hd ', ' Of ', ' The ', ' A ', ' To '), array('HD ', ' HD ', ' of ', ' the ', ' a ', ' to '), ucwords(str_replace("-", " ", $dir))) . ' Screenshots';
            $img_directory = '/wp-content/uploads/screenshots/' . $parent_slug . '/' . $dir . '/';
            $thumb_directory = '/wp-content/uploads/screenshots/' . $parent_slug . '/' . $dir . '/thumb/';
            $img_list_directory = getcwd() . '/wp-content/uploads/screenshots/' . $parent_slug . '/' . $dir . '/';
            $found_shots = array();
            echo '<hr />';
            echo '<h2>' . $dir_h2 . '</h2>';
            echo '<div class="screenshot-thumbs-outer">';
            echo '<div class="screenshot-thumbs-inner">';
            foreach(new DirectoryIterator($img_list_directory) as $file) {
                if ($file->isDot()) continue;
                $fileName = $file->getFilename();
                $filetypes = array(
                    "png",
                    "PNG"
                );
                $filetype = pathinfo($file, PATHINFO_EXTENSION);
                if (in_array(strtolower($filetype), $filetypes )) {
                    $found_shots[] = array( 
                        "fileName" => $fileName
                    );       
                }
            }
            asort($found_shots);
            foreach($found_shots as $file) {
                $filename = $file['fileName'];
                $thumbname = substr($filename, 0, -3).'jpg';
                echo '<a href="#" data-featherlight="'.$img_directory.$filename.'" rel="nofollow">';
                echo '<img src="'.$thumb_directory.$thumbname.'"/>';
                echo '</a>';
            }
            echo '</div>';
            echo '</div>';
        }
    }
  }
}

同样,这个功能按预期工作,我只是想找到一些方法来添加'加载更多'功能,这样如果有150个图像,一次只能加载15个。我还需要在函数的后半部分复制“加载更多”按钮的代码,以便在页面上的任何其他库中发生这种情况。

我意识到这对其他人来说是很重要的,但是我花了很多时间来梳理这个网站上的答案以及搜索Google,但我找不到真正的解决方案。与我用来收集/显示这些图像的功能相关。

任何帮助都一定会受到赞赏。

谢谢!

0 个答案:

没有答案