如何仅在编辑特殊页面时增加上传大小?

时间:2016-09-18 作者:Rich Bennema

只有在编辑某些特殊页面时,我才使用以下代码来增加上载大小:

function my_edit_page_form( $post ) {
    if( my_is_special_page( $post ) ) {
        add_filter( \'upload_size_limit\', \'my_upload_size_limit\' );
    }
}
add_action( \'edit_page_form\', \'my_edit_page_form\' );

function my_upload_size_limit( $size ) {
    return 1024 * 18000;
}
在其中一页上,我有一个图库短代码。单击编辑按钮时,“最大上载”消息看起来正确,但上载被拒绝:

Maximum upload file size: 18 MB -- but 13 MB test.jpg exceeds the maximum upload size for this site.

在查看源代码时,我看到max_file_size 设置为8388608b,这是站点的默认值。此值来自wp_plupload_default_settings. 这意味着必须在edit_page_form

所以,如果我不能使用edit_page_form, 我可以用什么来代替之前调用的wp_plupload_default_settings 为了检查岗位?或者,我应该从内部检查帖子吗upload_size_limit? 如果后者是,那么我该怎么做?

--更新--

这是我的最终代码:

function my_upload_size_limit( $size ) {
    global $post;
    if ( $post && $post->filter == \'edit\' && $post->post_type == \'page\' &&
        my_is_special_page( $post ) ) {
        $size = 1024 * 18000;
    }
    return $size;
}
add_filter( \'upload_size_limit\', \'my_upload_size_limit\' );

1 个回复
最合适的回答,由SO网友:Dave Romsey 整理而成

我认为您的想法是正确的,即检查是否在连接到的回调中查看了正确的页面upload_size_limit

此代码演示在查看其中一个特殊页面时更改上载大小,否则返回标准的最大上载大小:

function wpse239631_change_upload_size( $u_bytes, $p_bytes ) {
    // Array of post IDs where the upload size will be changed.
    $special_pages = array(
        1829, // change to your page
        1800, // change to your page, etc
    );

    // If we\'re on a special page, change the upload size,
    // otherwise, use the default max upload size.
    if ( in_array( get_the_ID(), $special_pages ) ) {
        return 1024 * 18000;
    } else {
        return min( $u_bytes, $p_bytes );
    }
}
add_filter( \'upload_size_limit\', \'wpse239631_change_upload_size\', 10, 2 );