3

私はこの少し奇妙な問題を抱えています;)。カスタム スクリプト (css、js) は、管理者のカスタム投稿タイプ エディターが読み込まれる (新しいカスタム投稿タイプを追加する、カスタム mpost タイプを編集する) 場合にのみ読み込みたいと思います。

カスタム投稿タイプは次のように登録されます。

add_action( 'init', 'cs_product_register_post_types' );
function cs_product_register_post_types() {
    $product_args = array(
        'public' => true,
        'rewrite' => array(
            'slug' => 'products',
            'with_front' => false,
            'pages' => false
        ),
        'supports' => array(
            'title',
            'editor',
            'page-attributes'
        ),
        'labels' => array(
            'name' => 'Produkty',
            'singular_name' => 'Produkt',
            'add_new' => 'Dodaj nowy produkt',
            'add_new_item' => 'Dodaj nowy produkt',
            'edit_item' => 'Edytuj produkt',
            'new_item' => 'Nowy produkt',
            'view_item' => 'Wyswietl produkt',
            'search_items' => 'Wyszukaj produkt',
            'not_found' => 'Produktu nie znaleziono',
            'not_found_in_trash' => 'Brak usuniętych produktów'
        ),
        'menu_position' => 3,
    );
    register_post_type( 'products', $product_args );
}

それらのために、カスタムメタボックスを登録する関数があります:

add_action( 'add_meta_boxes', 'cs_products_mb_create' );
function cs_products_mb_create() {
    //create a custom meta box
    add_meta_box( 'products-info', 'Ustawienia Produktu', 'cs_products_mb_function', 'products', 'normal', 'high' );
}

これは、登録済みのカスタム投稿タイプ (製品) に対してのみ機能します。

あとは、カスタム js をロードするだけです。次の方法で実行できます。

add_action('admin_print_styles-post.php', 'cs_products_admin_styles');
add_action('admin_print_styles-post-new.php', 'cs_products_admin_styles');

function cs_products_admin_styles() {
    wp_enqueue_style( 'thickbox' );
    wp_enqueue_style ('theme', get_bloginfo('template_url') . '/css/admin.css', '', '1.0');
} 

しかし、それはすべての投稿で機能し、それを行うための最良の方法ではありません;)。

アイデアをありがとう。


編集

掘って、掘って、掘った後...それを行う最も簡単な方法の1つ:

//load scripts only when on products custom post type edit page
if ( ( isset($_GET['post_type']) && $_GET['post_type'] == 'products' ) || ( isset($post_type) && $post_type == 'products' ) ) {
    add_action('admin_enqueue_scripts', 'cs_admin_customposttype_scripts');
}

function cs_admin_customposttype_scripts(){ 
    wp_enqueue_style ('theme', get_bloginfo('template_url') . '/css/admin.css', '');    
    wp_enqueue_script( 'cs-image-upload', get_bloginfo('template_url').'/js/admin.js', array( 'jquery') );
}

ただし、このソリューションの問題は、新しいカスタム投稿が作成されている場合にのみ機能することです。編集時、$_GET['post_type'] または $post_type は使用できません。

4

1 に答える 1

2

もう少し探したら…

//load scripts only when on products custom post type edit page
if ( ( isset($_GET['post_type']) && $_GET['post_type'] == 'products' ) || ( isset($post_type) && $post_type == 'products' ) || ( isset($_GET['post']) && get_post_type($_GET['post']) == 'products' ) ) {
    add_action('admin_enqueue_scripts', 'cs_admin_customposttype_scripts');
}

function cs_admin_customposttype_scripts(){ 
    wp_enqueue_style ('theme', get_bloginfo('template_url') . '/css/admin.css', '');    
    wp_enqueue_script( 'cs-image-upload', get_bloginfo('template_url').'/js/admin.js', array( 'jquery') );
}

$_GET で送信され、get_post_type 関数を使用して、既知の変数を 1 つだけ使用する追加または使用。

于 2013-02-13T11:10:53.330 に答える