बस स्क्रिप्ट को कस्टम पोस्ट प्रकार के लिए व्यवस्थापक में लोड करें


18

मैंने कुछ इस तरह से एक कस्टम पोस्ट टाइप "पोर्टफोलियो" बनाया है:

$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 );

और मेरे पास एक कार्रवाई के साथ कुछ अन्य कस्टम फ़ील्ड हैं:

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");
}

हालाँकि मेरे पास एक बार यह काम था लेकिन मैं इसे केवल इस पृष्ठ के लिए स्क्रिप्ट लोड करने के लिए प्राप्त नहीं कर सकता। अभी तो मेरे पास सिर्फ wp_enqueue_scriptइस तरह से बाकी हैं :

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');

लेकिन इसमें से कोई भी मेरे लिए लोड नहीं हो रहा है। मैं इन स्क्रिप्ट को व्यवस्थापक पृष्ठों में कैसे लोड कर सकता हूं? बेहतर है कि मैं उन्हें विशेष रूप से पोर्टफोलियो कस्टम पोस्ट प्रकार के संपादन पृष्ठों के लिए कैसे लोड कर सकता हूं?


2
FYI करें: एन्क्यूट्स को इनिट पर नहीं जाना चाहिए .. (बहुत से लोग इसे करते हैं, लेकिन यह एक एन्क्यू के लिए सही जगह नहीं है) ..
t31os

जवाबों:


32

अपने पोर्टफोलियो कस्टम पोस्ट प्रकार के संपादन पृष्ठों में स्क्रिप्ट जोड़ने के लिए इस कोड को आज़माएं।

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
अब सटीक नहीं है। @Smartik जवाब अब सही दृष्टिकोण है।
यार्न

25

मैं एक बेहतर समाधान पोस्ट करूंगा क्योंकि स्वीकृत उत्तर पुराना है और सही हुक का उपयोग नहीं करता है

सबसे पहले: एडमिन एरिया में स्क्रिप्ट्स और स्टाइल्स को एनकाउंटर करने के लिए इस्तेमाल किया जाना चाहिए admin_enqueue_scriptsऔर कुछ नहीं।

दूसरा: किसी भी वैश्विक संस्करण को भूल जाओ। विभिन्न जांच करने के लिए वर्तमान स्क्रीन ऑब्जेक्ट का उपयोग करें।

यहाँ एक तैयार कॉपी पेस्ट कोड है:

<?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');

नोट: 'portfolio'आवश्यक पोस्ट प्रकार स्लग के साथ बदलें ।


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
}

मैंने अपने लिए काम करने के लिए इस कोड में कुछ बदलाव किए हैं:

  1. मैं बदल get_stylesheet_directory_uri() . '/admin.js'गया plugins_url( '/js/admin.js', __FILE__),- यह आवश्यक था क्योंकि मैंने एक बैनर के लिए एक प्लगइन विकसित किया है, जो सीपीटी को अंदर बनाने के बजाय बेहतर समाधान हैfunctions.php

  2. मैंने trueसिर के बजाय पाद लेख क्षेत्र में कोड भेजने के लिए " " जोड़ दिया है - लोडिंग के लिए समय में सुधार करता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.