是否为上传的文件动态创建固定链接?

时间:2019-02-11 作者:Rollor

我有一个自定义页面模板,它允许用户使用media_handle_upload() 因此,所有内容都一致存储在wp-content/uploads/20yy/mm/

我还将文件名(和user\\u id等)存储在单独的表中tbl_files

我显示这些文件的列表,这些文件应该可以下载,我想使用<;a href=*nice looking dynamic permalink that doesn\'t say wp-content/uploads*>.

这可能吗?我想它应该在上传过程中创建一个唯一的永久链接,然后我可以将该永久链接存储在tbl_files, 所以我可以用它来<a href>

1 个回复
SO网友:user141080

您可以使用所谓的“虚拟页面”。

虚拟页面是指未在WordPress管理区域中管理的页面。这意味着此页面不是由帖子、页面或自定义帖子类型表示的。

创建虚拟页面有不同的方法,一种方法是使用自定义重写规则。

示例:

领域com/download/123

// inform wordpress about the new url
add_filter( \'generate_rewrite_rules\', function ( $wp_rewrite ) {
        $wp_rewrite->rules = array_merge(
        [\'download/(\\d+)/?$\' => \'index.php?dl_id=$matches[1]\'],
        $wp_rewrite->rules
    );
} );

// add dl_id to the list of WordPress query vars 
// so wordpress knows that variable
add_filter( \'query_vars\', function( $query_vars ) {
    $query_vars[] = \'dl_id\';
    return $public_query_vars;
} );


add_action( \'template_redirect\', function() {
    $dl_id = intval( get_query_var( \'dl_id\' ) );
    if ( $dl_id ) {
        // load the filename from the database and send the file to the browser 
        die;
    }
} );
详细解释见文章“How to Create a Virtual Page in WordPress“由Anh Tran在媒体上发布。

相关推荐

Extra "uploads" added in path

虽然这与高级自定义字段相关,但此函数使用所有本机WP特性,因此我认为在这里询问这一点是合适的。路径中的额外“/上传/”来自何处?在后端,我看到了上传文件的正确链接(domain.com/wp-content/member-files/name.pdf),但在前端,URL在路径(domain.com/wp-content/uploads/member-files/name.pdf)中显示了额外的“/uploads/”,当然为文件生成了404。// file upload to custom location