このようなものを含むカスタム投稿タイプ「ポートフォリオ」を作成しました。
$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');
しかし、これのどれも私のためにロードされていません。これらのスクリプトを管理ページに読み込むにはどうすればいいですか?それでもなお、ポートフォリオのカスタム投稿タイプの編集ページ専用にそれらをロードするにはどうすればよいですか。
ポートフォリオのカスタム投稿タイプの編集ページにスクリプトを追加するためのこのコードを試してください。
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' );
}
受け入れられた答えは古く、 正しいフックを使用していないので、私はより良い解決策を投稿します 。
まず第一に:管理領域にスクリプトとスタイルをエンキューするには、admin_enqueue_scripts
を使用し、それ以外には使用しないでください。
Second:グローバル変数をすべて忘れます。現在の画面オブジェクトを使用してさまざまなチェックを実行します。
これがコピー可能なコピーペーストコードです。
<?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'
を必要な投稿タイプのスラッグに置き換えます。
// 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
}
私はこのコードにいくつかの変更を加えて、私のために働きました。
get_stylesheet_directory_uri() . '/admin.js'
をplugins_url( '/js/admin.js', __FILE__),
に変更しました-functions.php
内にCPTを作成するより良いソリューションであるバナー用のプラグインを開発したため、これが必要でした
「true
」を追加して、コードを頭ではなくフッター領域に送信します-読み込み時間を短縮します