我有一个文件夹我的网站。com/wp-content/customUploads,其中包含数百个pdf文件。
此时,查看pdf文件的url是例如:mywebsite。com/wp-content/customUploads/myfile。pdf格式
我的目标是为每个PDF文件创建一个url,如:mywebsite。com/pdf文件/myfile。pdf格式
因此,如果用户请求上述url,网站将加载pdf文件。
是否有方法请求url:
我的网站。com/pdf文件/myfile。pdf并且此url被转换为以下内容,以便可以正确加载文件?
我的网站。com/wp-content/customUploads/myfile。pdf文件
SO网友:Aboelabbas
您可以通过使用自定义重写规则在WordPress中实现这一点。
在主题函数中使用此代码。php文件或插件内部。
// 1- Create a custom query var
add_filter( \'query_vars\', function ( $query_vars ) {
$query_vars[] = \'my_pdf_file\';
return $query_vars;
});
// 2- Add a custom rewrite rule.
// NOTE: rewrite rules must be flushed for this rule to work.
// You can flush rewrite it by saving permalinks from dashboard.
add_action(\'init\', function (){
add_rewrite_rule(\'^pdf-files/([a-zA-Z0-9 _\\-]+\\.pdf)$\',\'index.php?my_pdf_file=$matches[1]\' );
});
// 3- Find and display the PDF file when a pdf file link is visited.
add_action(\'template_redirect\', function () {
$pdf_file_name = get_query_var(\'my_pdf_file\');
// Don\'t do anything if no file name is supplied
if(! $pdf_file_name) {
return;
}
// Create the file path with the supplied name.
$pdf_file_path = \\WP_CONTENT_DIR . \'/customUploads/\' . $pdf_file_name;
// Show 404 page if invalid file name is supplied
if(! is_file($pdf_file_path)) {
global $wp_query;
$wp_query->set_404();
return;
}
// Read and display the PDF file
header("Content-type: application/pdf");
readfile($pdf_file_path);
exit;
});
别忘了保存“permalinks from”;permalinks设置;使用上述代码后,WordPress仪表板上的页面刷新重写规则。