Tải tập lệnh chỉ để loại bài đăng tùy chỉnh trong quản trị viên


18

Tôi đã tạo một loại "danh mục đầu tư" tùy chỉnh với một cái gì đó như thế này:

$args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true,
    'query_var' => true,
    //'menu_icon' => get_stylesheet_directory_uri() . '/article16.png',
    'rewrite' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    'menu_position' => 4,
    'taxonomies' => array('post_tag','category'),
    'supports' => array('title','editor','comments','trackbacks','revisions','custom-fields','page-attributes','thumbnail', 'excerpt', 'tags')
  ); 

register_post_type( 'portfolio' , $args );

Và tôi có một số trường tùy chỉnh khác trong đó với một hành động:

add_action("admin_init", "admin_init");
function admin_init(){ // add_meta_box( $id, $title, $callback, $page, $context, $priority ); 
  add_meta_box("media", "Media Type", "media", "portfolio", "side", "high");
  add_meta_box("map_meta", "Mapping Info", "map_meta", "portfolio", "normal", "high");
}

Mặc dù tôi đã từng làm việc này nhưng tôi không thể tìm ra để tải tập lệnh cho trang này. Ngay bây giờ tôi chỉ cần có chúng trong phần còn lại của wp_enqueue_scriptnhư thế này:

function my_init() {
    if (!is_admin()) {
                       ....
        }

 if (is_admin()) {
        wp_register_script('Gmaps', 'http://maps.google.com/maps/api/js?sensor=false', false, '3.0', false);
        wp_enqueue_script('Gmaps');


        wp_register_style('admin_js', get_bloginfo('template_directory') . '/admin.js');
        wp_enqueue_script('admin_js');

        wp_register_script('Zmaps', get_bloginfo('template_directory') .'/scripts/maps.js', array('Gmaps'), '1.0', true);
        wp_enqueue_script('Zmaps');
        }
           }
add_action('wp_enqueue_scripts', 'my_init');

Nhưng không ai trong số này đang tải cho tôi. Làm cách nào tôi có thể tải các tập lệnh này vào các trang quản trị? Tốt hơn nữa làm thế nào tôi có thể tải chúng cụ thể cho các trang chỉnh sửa của loại bài đăng tùy chỉnh danh mục đầu tư?


2
FYI: Enqueues không nên tiếp tục .. (rất nhiều người làm điều đó, nhưng đó không phải là nơi thích hợp cho một cuộc tranh tài) ..
t31os

Câu trả lời:


32

Hãy thử mã này để thêm tập lệnh vào các trang chỉnh sửa loại bài đăng tùy chỉnh danh mục đầu tư của bạn.

add_action( 'admin_print_scripts-post-new.php', 'portfolio_admin_script', 11 );
add_action( 'admin_print_scripts-post.php', 'portfolio_admin_script', 11 );

function portfolio_admin_script() {
    global $post_type;
    if( 'portfolio' == $post_type )
    wp_enqueue_script( 'portfolio-admin-script', get_stylesheet_directory_uri() . '/admin.js' );
}

1
không còn chính xác. Câu trả lời @Smartik bây giờ là phương pháp đúng.
Yaron

25

Tôi sẽ đăng một giải pháp tốt hơn vì câu trả lời được chấp nhận đã cũ và không sử dụng đúng móc .

Trước hết: Để liệt kê các tập lệnh và kiểu trong khu vực quản trị, phải được sử dụng admin_enqueue_scriptsvà không có gì khác.

Thứ hai: Quên bất kỳ bình toàn cầu. Sử dụng đối tượng màn hình hiện tại để thực hiện các kiểm tra khác nhau.

Đây là một mã dán sao chép sẵn sàng:

<?php 
function wpse_cpt_enqueue( $hook_suffix ){
    $cpt = 'portfolio';

    if( in_array($hook_suffix, array('post.php', 'post-new.php') ) ){
        $screen = get_current_screen();

        if( is_object( $screen ) && $cpt == $screen->post_type ){

            // Register, enqueue scripts and styles here

        }
    }
}

add_action( 'admin_enqueue_scripts', 'wpse_cpt_enqueue');

Lưu ý: Thay thế 'portfolio'bằng sên loại cần thiết.


1
// Enter custom JS TO ADMIN AREA

add_action( 'admin_print_scripts-post-new.php', 'banner_admin_script', 11 );
add_action( 'admin_print_scripts-post.php', 'banner_admin_script', 11 );

function banner_admin_script() {
    global $post_type;
    if ( $post_type == 'banner' )
        wp_enqueue_script( 'portfolio-admin-script', plugins_url( '/js/admin.js', 
            __FILE__), '', '', true ); // "TRUE" - ADDS JS TO FOOTER
}

Tôi đã thực hiện một số thay đổi trong mã này để làm việc cho tôi:

  1. Tôi đã thay đổi get_stylesheet_directory_uri() . '/admin.js'thành plugins_url( '/js/admin.js', __FILE__),- điều này là cần thiết bởi vì tôi đã phát triển một plugin cho một biểu ngữ, đó là giải pháp tốt hơn thay vì tạo CPT bên trongfunctions.php

  2. Tôi đã thêm " true" để gửi mã ở khu vực chân trang thay vì đầu - cải thiện thời gian tải

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.