2

我是 Wordpress 的新手,需要一些帮助。

我想要做的是我已经创建了一个 Wordpress 帐户,现在我想在该博客中创建一个部分,其中包含我上传到我的计算机上特定文件夹的所有文件。因此,每当我在那里更改任何文件时,它都会自动更改那里。这可能吗?

还有一种方法可以仅将我的 wordpress 网站的读取权限授予具有用户名和密码的人吗?

我正在使用 Linux Ubuntu 12.04

4

1 回答 1

4

我们开始吧,以插件的形式 :)

wordpress中的自定义文件夹文件列表

笔记

  • 媒体子菜单增加了功能add_media_page()

  • 正在读取的文件夹是wp-content/custom/使用WordPress 常量 WP_CONTENT_*。如果您没有修改它们,它们会指向默认的内容目录。

  • 调整 和 的$baseDir$baseUrl

  • 也许,您不想直接链接到文件,而是要强制下载或打开媒体播放器

  • 创建一个新的PHP文件,粘贴代码,放入你的插件文件夹,激活

插入

<?php
/*
Plugin Name: List Files in Custom Folder
Plugin URI: https://stackoverflow.com/q/13416177/1287812
Description: Add a Media page where the contents of a custom folder are listed as "<a>Filename</a> - Size"
Author: Rodolfo Buaiz
Author URI: http://wordpress.stackexchange.com/users/12615/brasofilo
Version: 1.0
License: GPL
*/
add_action( 'admin_menu', 'so_13416177_folder_menu' );

function so_13416177_folder_menu() 
{
    add_media_page( 
        'Custom Folder Media', 
        'Custom Folder', 
        'delete_plugins', 
        'so-13416177', 
        'so_13416177_display_page' 
    );
}

function so_13416177_display_page() 
{
    $baseDir = WP_CONTENT_DIR . '/custom';
    $baseUrl = WP_CONTENT_URL . '/custom/';
    $files = array();
    
    if ( $dir = opendir( $baseDir ) ) 
    {
        while ( $file = readdir( $dir ) ) 
        {
            if ( $file != "." && $file != '..' ) 
            {
                if ( !is_dir( $baseDir . "/" . $file ) ) 
                {
                    // Hide files that start with a dot
                    if( !so_834303_starts_with( $file, '.' ) ) 
                    {
                        $size = so_13416177_file_size( 
                            filesize( $baseDir . "/" . $file ) 
                            );
                        $files[] = array( $file, $size );
                    }
                }
            }
        }       
        closedir($dir);     
    }

    ?><div id="icon-upload" class="icon32"></div><h2>Custom Folder</h2><?php
    
    if ( empty( $files ) ) 
    {
        echo '<p>No files!</p>';
        break;
    }
    ?>              
    <table class="widefat">
        <thead>
            <tr>
                <th>File</th>
                <th>Size</th>
            </tr>
        </thead>
        <tfoot>
            <tr>
                <th>File</th>
                <th>Size</th>
            </tr>
        </tfoot>
        <tbody>
    <?php
    foreach ($files as $file) 
    {
        ?>
           <tr>
              <td>
                <a href="<?php echo $baseUrl.$file[0]; ?>">
                <?php echo $file[0]; ?>
                </a>
             </td>
             <td><b><?php echo $file[1]; ?></b></td>
           </tr>
        <?php
    }
    ?>
        </tbody>
    </table>
    <?php
}

// https://stackoverflow.com/q/834303
function so_834303_starts_with( $haystack, $needle )
{
    return !strncmp( $haystack, $needle, strlen( $needle ) );
}

// http://www.php.net/manual/en/function.filesize.php#110739
function so_13416177_file_size( $o, $depth=0 ) 
{
    if( $o > 1024 ) 
        return so_13416177_file_size( $o/1024, $depth+1 );
    
    $unit = array( 'B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'PB', 'ZB', 'YB' );
    return sprintf( '%.01f %s', $o, $unit[$depth] );
}

PS。

要为用户提供只读权限,请将其角色设置为Subscriber

于 2012-12-01T15:27:38.890 回答