文件夹内容中的自动图库

时间:2013-06-10 作者:Fred

我想创建一个WordPress快捷码,在文件夹中自动添加内容库。我目前正试图在一个发布12期年度杂志的网站上实现这一点,因此,一旦新的PDF或JPG被放入文件夹中,它就应该显示在特定的库中。

含义:

需要在4x3或6x2网格库中显示2013年1月至12月的存档。如果我们在六月,最新一期是六月,那么只会显示6个JPG。

这样,客户端就不需要在WordPress站点中进行任何修改。相反,客户端可以通过FTP将文件拖放到特定的文件夹中,WordPress PHP函数将根据能够从该文件夹的内容中获取的内容自动填充库。

EDIT

不幸的是,“文件夹库”插件很接近,但还不够好。它不会读取位于WP uploads文件夹之外的文件夹的内容,我们也不想迁移WordPress安装文件夹中的现有文件夹结构。

我还需要它在新窗口中打开该杂志PDF的链接,而不是在Fancybox中打开更大版本的图片。

1 个回复
SO网友:jgraup

听起来您只需要使用快捷码来收集文件夹的内容并显示这些项目的网格。短代码很容易设置。

$gallery = do_shortcode(\'[folder_gallery title="XYZ" folder="wp-content/uploads/2015/11"]\' ); 
echo $gallery; 
那你只需要glob 一个目录,并从文件中渲染您的库。我没有包括一个画廊,但这将工作以外的上传。只需给它一个相对于根文件夹的路径。

// [folder_gallery folder="wp-content/uploads/2015/11" ]

add_shortcode( \'folder_gallery\', \'folder_gallery__shortcode\' );

function folder_gallery__shortcode( $atts ) {
    $a = shortcode_atts(
        array (
            \'folder\' => \'\',
            \'title\'  => \'\',
        ), $atts );

    $folder = $a [ \'folder\' ];

    // bad folder
    if ( empty( $folder ) || ! is_readable(ABSPATH . $folder) ) {
        return \'No Valid Folder Selected\';
    }

    // allow filtering of the filetypes
    $filetypes = apply_filters( \'folder_gallery_shortcode__filetypes\', array ( \'png\', \'jpg\', \'jpeg\', \'gif\' ) );

    // glob
    $filetypes = empty( $filetypes ) ? \'png,jpg,jpeg,gif\' : implode( \',\', $filetypes );
    $files     = glob( untrailingslashit( ABSPATH . $folder ) . "/*.{" . $filetypes . "}", GLOB_BRACE );

    $gallery_images = array ();
    foreach ( $files as $file ) {
        if ( $file === __FILE__ ) {
            continue;
        }

        /*
        $filetype        = wp_check_filetype( $file );
        $ext             = $filetype[ \'ext\' ];
        $type            = $filetype[ \'type\' ];
        $proper_filename = $filetype[ \'proper_filename\' ];
        */

        // replace the filepath with url path for front-end gallery
        $gallery_images[] = str_replace( trailingslashit( ABSPATH ), trailingslashit( WP_SITEURL ), $file );
    }

    // TODO: IMPLEMENT YOUR GALLERY HERE

    // construct the gallery
    $output = empty( $a[ \'title\' ] ) ? \'\' : \'<h2>\' . $a[ \'title\' ] . \'</h2>\';
    $output .= \'<ul>\';

    // Loop through each image in each gallery
    foreach ( $gallery_images as $image_url ) {
        $output .= \'<li>\' . \'<img src="\' . $image_url . \'">\' . \'</li>\';
    }
    $output .= \'</ul>\';

    // allow filtering of the output
    $gallery = apply_filters( \'folder_gallery_shortcode__gallery\', $output, $gallery_images );

    return $gallery;
}

结束

相关推荐

Shortcode of a function

我得到了这个函数,我想将“foreach”的contents divs作为return。我该怎么做?<?php $args = array( \'numberposts\' => 6, \'post_status\'=>\"publish\",\'post_type\'=>\"post\",\'orderby\'=>\"post_date\"); $postslist = get_posts( $args ); fo