如何在WordPress单个站点中显示最大上传大小?

时间:2019-12-23 作者:Mayeenul Islam

我在一个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实例中在首页表单上显示最大上载大小?

1 个回复
最合适的回答,由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 ) ) );
?>

相关推荐

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