我有一个自定义页面模板,它允许用户使用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>
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在媒体上发布。