অ্যাডমিনে কাস্টম পোস্ট টাইপের জন্য একটি স্ক্রিপ্ট লোড করুন


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
এফওয়াইআই: এনকুইগুলি আরম্ভ করা উচিত নয় (প্রচুর লোকেরা এটি করে, তবে এটি একটি
এনকুইয়ের

উত্তর:


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
আর সঠিক না। @ স্মারটিক উত্তর এখন সঠিক পদ্ধতির।
ইয়ারন

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__),- কারণ আমি একটি ব্যানার জন্য একটি প্লাগইন, যা ভাল সমাধান পরিবর্তে CPT ভিতরে তৈরি হয় গড়ে তুলেছি এই প্রয়োজন ছিলfunctions.php

  2. আমি trueমাথার পরিবর্তে ফুটার এরিয়ায় কোড পাঠাতে " " যুক্ত করেছি - লোডিংয়ের সময় উন্নত করে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.