加载脚本到admin wordpress


Load scripts to admin wordpress

我对如何加载脚本wp admin感到困惑。我创建了一个metabox上传图像,并将wordpress thickbox上传器附加到它上面。使用jquery显示wordpress上传器thickbox:

$(function() {
var formfield = null;
$('#upload_image_button').click(function() {
    $('html').addClass('Image');
    formfield = $(this).prev('input').attr('name');  
    formfield_id = $(this).prev('input').attr('id'); 
    tb_show( '', 'media-upload.php?type=image&TB_iframe=true' );
    return false;
});
// user inserts file into post.
// only run custom if user started process using the above process
// window.send_to_editor(html) is how wp normally handles the received data
window.original_send_to_editor = window.send_to_editor;
window.send_to_editor = function( html ) {
    var fileurl;
    if(formfield != null) {
        fileurl = $( 'img', html).attr('src');
        $( "#" + formfield_id ).val(fileurl);
        tb_remove();
        $('html').removeClass('Image');
        formfield = null;
    } else {
        window.original_send_to_editor(html);
    }
};
});
我metabox

function upload_image(){
 echo '<input id="upload_image" type="text" size="36" name="_logo_agence" value="'.$logo_agence.'" />';
        echo '<input id="upload_image_button" type="button" value=" Logo" />';
        echo '<div>'.$image_logo.'</div>';
}

和附加javascript:

// Enqueue script
    function my_admin_scripts() {    
        wp_enqueue_media('media-upload');
        wp_enqueue_media('thickbox');
        wp_register_script('my-upload', get_stylesheet_directory_uri().'/js/metabox.js', array('jquery','media-upload','thickbox'));
        wp_enqueue_media('my-upload');
    }
    // Attacher le thickbox
    function my_admin_styles() {
        wp_enqueue_style('thickbox');
    }
// better use get_current_screen(); or the global $current_screen
    add_action('admin_enqueue_scripts', 'my_admin_scripts');
    add_action('admin_enqueue_scripts', 'my_admin_styles');

问题是,这个脚本不附加到wordpress管理,当我使用元素检查器没有metabox.js任何地方,所以当我点击我的metabox按钮加载脚本,它不加载thickbox。

有人知道吗?

  • 不需要两个admin_enqueue_scripts

  • 脚本media-uploadthickbox被添加为您的my-upload的依赖项,因此不需要将它们排队

  • wp_enqueue_script('my-upload'),不是 wp_enqueue_media

  • 在WordPress中使用以下jQuery样式:

    jQuery(document).ready(function($){ /*my-code*/ });
    
工作队列:

add_action('admin_enqueue_scripts', 'my_admin_scripts');
function my_admin_scripts($hook) 
{
    # Not our screen, bail out
    if( 'post.php' !== $hook )
        return;
    # Not our post type, bail out
    global $typenow;
    if( 'post' !== $typenow )
        return;
    wp_register_script( 
        'my-upload', 
        get_stylesheet_directory_uri() . '/js/script.js', 
        array( 'jquery', 'media-upload', 'thickbox' )
    );
    wp_enqueue_script('my-upload');
    wp_enqueue_style('thickbox');
}