Ich habe einen benutzerdefinierten Beitragstyp "Portfolio" erstellt, der ungefähr so aussieht:
$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 );
Und ich habe einige andere benutzerdefinierte Felder mit einer Aktion:
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");
}
Obwohl ich dies einmal funktionierte, kann ich nicht herausfinden, dass es Skripte nur für diese Seite lädt. Im Moment habe ich sie nur mit dem Rest des wp_enqueue_script
wie folgt verbunden:
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');
Aber nichts davon wird für mich geladen. Wie kann ich diese Skripte in die Admin-Seiten laden? Besser noch, wie kann ich sie speziell für die Bearbeitungsseiten des benutzerdefinierten Beitragstyps Portfolio laden?
Verwenden Sie diesen Code, um Skripts zu den Bearbeitungsseiten Ihres benutzerdefinierten Beitragstyps für das Portfolio hinzuzufügen.
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' );
}
Ich poste eine bessere Lösung, da die akzeptierte Antwort alt ist und nicht die richtigen Haken verwendet .
Zuallererst: Um Skripte und Stile im Admin-Bereich in die Warteschlange zu stellen, muss admin_enqueue_scripts
und nichts anderes verwendet werden.
Zweitens: Vergessen Sie alle globalen Variablen. Verwenden Sie das aktuelle Bildschirmobjekt, um verschiedene Überprüfungen durchzuführen.
Hier ist ein fertiger Code zum Kopieren und Einfügen:
<?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');
Hinweis: Ersetzen Sie 'portfolio'
durch den benötigten Pfostentyp slug.
// 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
}
Ich habe einige Änderungen an diesem Code vorgenommen, um für mich zu funktionieren:
Ich habe get_stylesheet_directory_uri() . '/admin.js'
in plugins_url( '/js/admin.js', __FILE__),
geändert - dies wurde benötigt, weil ich ein Plugin für ein Banner entwickelt habe. Dies ist die bessere Lösung, anstatt CPT in functions.php
zu erstellen.
Ich habe "true
" hinzugefügt, um den Code im Fußzeilenbereich anstatt im Kopfbereich zu senden - dies verkürzt die Ladezeit