WordPress:在管理选项页面上传图片

10

我正在开发我的第一个WordPress插件。它只需要允许用户更改自定义模板中的标志和颜色方案。

我已经创建了一个管理选项页面,现在想要添加一个字段,以允许用户上传图像。我该如何将图像上传到wp-content/uploads文件夹中?到目前为止,我在表格内有以下内容:

<td><input name="logo_image" type="file" id="logo_image" value="" /></td>

这是正确的方法吗?如果是,我如何将文件指定到正确的文件夹?WordPress有自己处理文件上传的方式吗?


它将创建一个空的上传媒体目录,但不会渲染默认的媒体弹出窗口部分。 - user4970006
2个回答

24

将此代码添加到您的全局自定义选项函数中。

if(function_exists( 'wp_enqueue_media' )){
    wp_enqueue_media();
}else{
    wp_enqueue_style('thickbox');
    wp_enqueue_script('media-upload');
    wp_enqueue_script('thickbox');
}

<p><strong>Header Logo Image URL:</strong><br />
                <img class="header_logo" src="<?php echo get_option('header_logo'); ?>" height="100" width="100"/>
                <input class="header_logo_url" type="text" name="header_logo" size="60" value="<?php echo get_option('header_logo'); ?>">
                <a href="#" class="header_logo_upload">Upload</a>

</p>    


<script>
    jQuery(document).ready(function($) {
        $('.header_logo_upload').click(function(e) {
            e.preventDefault();

            var custom_uploader = wp.media({
                title: 'Custom Image',
                button: {
                    text: 'Upload Image'
                },
                multiple: false  // Set this to true to allow multiple files to be selected
            })
            .on('select', function() {
                var attachment = custom_uploader.state().get('selection').first().toJSON();
                $('.header_logo').attr('src', attachment.url);
                $('.header_logo_url').val(attachment.url);

            })
            .open();
        });
    });
</script>

更多信息

或者

在主题和插件中添加媒体上传器

输入图像描述


不确定在哪里添加这个...管理员菜单是一个php文件,我只需要添加JS部分吗? - Adeerlike
这取决于您的设置功能。如何创建外观,请参考https://codex.wordpress.org/Creating_Options_Pages - Ravi Patel
据我了解 - WordPress 建议使用自定义 API,而不是... https://developer.wordpress.org/themes/advanced-topics/customizer-api/ - Adeerlike

2
你可以使用WordPress的内置函数。
<?php wp_handle_upload( $file, $overrides, $time ); ?>

这将自动将文件移动到上传文件夹中。
或者,
你可以编写自己的PHP函数。
更多详细信息可在此处找到 -> WordPress文件上传

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接