Php 从另一个弹出窗口启动WordPress中的媒体上传程序

Php 从另一个弹出窗口启动WordPress中的媒体上传程序,php,jquery,media,wordpress,Php,Jquery,Media,Wordpress,我在tinyMCE的工具栏上添加了一个按钮来启动弹出窗口。该按钮将调用editor.windowManager.open。。。并将此类参数作为URL传递: /wp admin/media upload.php?post_id=SOME_post_id&type=z_recipe&tab=amd_zlcipe&TB_iframe=true 在我的主插件文件中,我有以下代码,在调用上述URL时生成一些iframe代码: if (strpos($_SERVER['REQUEST_URI'], 'med

我在tinyMCE的工具栏上添加了一个按钮来启动弹出窗口。该按钮将调用editor.windowManager.open。。。并将此类参数作为URL传递:

/wp admin/media upload.php?post_id=SOME_post_id&type=z_recipe&tab=amd_zlcipe&TB_iframe=true

在我的主插件文件中,我有以下代码,在调用上述URL时生成一些iframe代码:

if (strpos($_SERVER['REQUEST_URI'], 'media-upload.php') && strpos($_SERVER['REQUEST_URI'], '&type=z_recipe') && !strpos($_SERVER['REQUEST_URI'], '&wrt='))
{
    ZipRecipes::zrdn_iframe_content($_POST, $_REQUEST);
    exit;
}
我发现,这表明以下几点应该有效:

<!DOCTYPE html>
<!--suppress HtmlUnknownTarget -->
<head>
    <?php


    function load_custom_code() {
        // jQuery
        wp_enqueue_script('jquery');
        // This will enqueue the Media Uploader script
        wp_enqueue_media();
    }
    add_action( 'admin_enqueue_scripts', 'load_custom_code' );
    ?>

</head>
<body id="amd-zlrecipe-uploader">
    <label for="image_url">Image</label>
    <input type="text" name="image_url" id="image_url" class="regular-text">
    <input type="button" name="upload-btn" id="upload-btn" class="button-secondary" value="Upload Image">

    <script type="text/javascript">
        jQuery(document).ready(function($){
            $('#upload-btn').click(function(e) {
                e.preventDefault();
                var image = wp.media({
                    title: 'Upload Image',
                    // mutiple: true if you want to upload multiple files at once
                    multiple: false
                }).open()
                    .on('select', function(e){
                        // This will return the selected image from the Media Uploader, the result is an object
                        var uploaded_image = image.state().get('selection').first();
                        // We convert uploaded_image to a JSON object to make accessing it easier
                        // Output to the console uploaded_image
                        console.log(uploaded_image);
                        var image_url = uploaded_image.toJSON().url;
                        // Let's assign the url value to the input field
                        $('#image_url').val(image_url);
                    });
            });
        });
    </script>
</body>
但是,浏览器开发工具告诉我jQuery和$没有定义

因此,这可以通过修复jQuery和wp_enqueue_媒体的包含方式或更改创建初始弹出窗口的方式来解决


您得到的任何帮助,我都可以使用。

您应该使用jQuery而不是$,并在functions.php wp_enqueue_样式的'thickbox'中添加此代码;wp_排队_脚本'thickbox';wp_排队_脚本“媒体上传”;这是一个插件,所以,不使用functions.php。我做了您建议的更改,但仍然找不到变量:jQuery.include该代码在您的插件中。并检查是否在管理脚本或脚本中包含jquery库我仍在调用wp_enqueue_script'jquery';,对