我在一个WordPress单站点上工作,在前端,在一个定制表单下面,我有一个文件上传功能,我需要显示最大上传大小。
在我的本地Laragon WAMP设置中,PHPpost_max_size
设置为2G
. 我想降级到20M
(20 mb)。
在搜索和阅读了几篇博客文章后,我在我的主题中添加了以下代码functions.php
:
<?php
// Set upload size limit to 20mb.
@ini_set(\'upload_max_size\', \'20M\');
@ini_set(\'post_max_size\', \'20M\');
@ini_set(\'max_execution_time\', \'300\');
/**
* Filter the upload size limit for non-administrators.
*
* @param string $size Upload size limit (in bytes).
*
* @return int Filtered size limit.
*/
function wpse_control_upload_size_limit( $size ) {
if ( ! current_user_can( \'manage_options\' ) ) {
return 20971520; // 20mb to binary bytes.
}
return $size;
}
add_filter( \'upload_size_limit\', \'wpse_control_upload_size_limit\', 20 );
有了这段代码,对于非管理员用户,我可以看到管理面板
Upload New Media 页面显示:
Maximum upload file size: 20 MB.
问题是:我想在前端显示相同的最大文件大小限制信息。
到目前为止,我尝试的是将以下代码放入functions.php
:
var_dump(@ini_get(\'post_max_size\'));
但这是
2G
限制,因为它没有获得WordPress设置。
我还尝试将此代码挂接到upload_size_limit
运气不好:
add_action( \'upload_size_limit\', function() {
var_dump( @ini_get( \'post_max_size\' ) );
});
我知道有一个插件名为
Increase Maximum Upload File Size, 但我不想为这个功能使用插件。我也知道,在multisite中,我们已经设置了可以获得最大上载大小的数据。
但是如何在单个WordPress实例中在首页表单上显示最大上载大小?
最合适的回答,由SO网友:Mayeenul Islam 整理而成
答案实际上就在您检查修改的同一页上:/wp-admin/media-new.php
.
如果你到达/wp-admin/media-new.php
文件,您将获得function:
<?php media_upload_form(); ?>
功能位于
/wp-admin/includes/media.php
, 哪里
you will get 以下行:
$max_upload_size = wp_max_upload_size();
因此,您正在搜索的冬青圣杯是:
wp_max_upload_size()
.
因此,您可以轻松地跟踪core,并使用以下代码位(感谢core)在任何地方显示最大上载大小:
<?php
$max_upload_size = wp_max_upload_size();
if ( ! $max_upload_size ) {
$max_upload_size = 0;
}
/* translators: %s: Maximum allowed file size. */
printf( __( \'Maximum upload file size: %s.\', \'wpse355118\' ), esc_html( size_format( $max_upload_size ) ) );
?>