Quindi continuo a riscontrare questo problema e sto solo cercando la soluzione migliore e più semplice per risolvere questo problema.
Sono venuto a fare uso di tipi di post personalizzati in molti progetti diversi e li ho estesi con metabox personalizzati che ho ulteriormente esteso aggiungendo script personalizzati come i selettori del calendario degli eventi jQuery ... Tutto questo funziona benissimo tranne un problema chiave ... Non voglio che questi script jQuery personalizzati vengano caricati su ogni pagina dell'amministratore.
Sto essenzialmente cercando un modo per avere questi campi jquery personalizzati caricati quando mi trovo nella pagina "modifica post" per un tipo di post SPECIFICO.
Qual è la soluzione migliore qui?
AGGIORNAMENTO 1
Prima di tutto, grazie mille.
In realtà sono scioccato dal fatto che gli sviluppatori di plug-in non si assicurino di cose del genere perché, come sto scoprendo, questo è uno dei motivi principali per cui esistono problemi con plug-in diversi.
Sto avendo ulteriori problemi con questo. Per esempio...
Ho modificato lo script per chiamare l'istruzione if in questo modo:
if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php' && $typenow=='events')
Come puoi vedere, sto cercando di impostare le cose in modo tale che i miei script vengano richiamati SOLO quando aggiungo o modifico un post nel tipo di post "eventi".
Non voglio che lo script venga caricato su qualsiasi altra pagina e inoltre non voglio che venga eseguito nell'elenco di pagine all'interno del tipo di post "eventi", quindi penso che l'istruzione if sia corretta.
Il problema tuttavia sembra essere che lo script viene caricato solo quando creo un nuovo post all'interno di questo tipo di post, ma non sembra funzionare quando sto modificando un post esistente.
Potresti provarlo e magari farmi sapere cosa potrei fare di sbagliato?
Ecco il codice esatto che sto usando ... forse c'è un modo migliore o semplice per farlo?
<?php
// INCLUDE METABOX CUSTOM JQUERY DATEPICKER 2
add_action('admin_init','load_admin_datapicker_script');
function load_admin_datapicker_script() {
global $pagenow, $typenow;
if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php' && $typenow=='events') {
$ss_url = get_bloginfo('stylesheet_directory');
wp_enqueue_script('jquery');
wp_enqueue_script('custom_js_jquery_ui',"{$ss_url}/admin-metabox/js/jquery-ui-1.7.1.custom.min.js",array('jquery'));
wp_enqueue_script('custom_js_daterangepicker',"{$ss_url}/admin-metabox/js/daterangepicker.jQuery.js",array('jquery'));
wp_enqueue_script('custom_js_custom',"{$ss_url}/admin-metabox/js/custom.js",array('jquery'),NULL,TRUE);
wp_enqueue_style('custom_css_daterangepicker',"{$ss_url}/admin-metabox/css/ui.daterangepicker.css");
wp_enqueue_style('custom_css_jquery_ui',"{$ss_url}/admin-metabox/css/redmond/jquery-ui-1.7.1.custom.css");
}
}
Inoltre ... se volessi aggiungere tre tipi di post e caricare diversi script JS per ogni tipo di post, allora avrei semplicemente duplicato il codice sopra tre volte separate o non è un buon modo per farlo? Ad esempio ... sarebbe meglio chiamare: global $ pagenow, $ typenow; Nella parte superiore del mio file di funzioni o importa o complica le cose quando lo duplico più di una volta?
Su un problema diverso correlato allo stesso ... Ad esempio sto utilizzando il plug-in "moduli gravità" ma ho notato che i loro script vengono eseguiti su ogni pagina dell'amministratore che causa problemi con altri plug-in. Come potrei modificare il loro script per garantire che gli script vengano caricati solo quando ne ho bisogno.
AGGIORNAMENTO 2
Ho modificato il mio file Functions.php con il codice fornito da Mike (sotto), tuttavia sembra che il javascript applicabile sia ancora incluso quando crei un NUOVO Post o una Pagina. Ciò significa che quando si tenta di creare un NUOVO post o una pagina creando un nuovo post / pagina wordpress predefinito o quando si crea un nuovo post / pagina basati su uno dei tipi di post personalizzati. Il codice proposto da Mike IS funziona su tutte le altre pagine di amministrazione e funziona quando si "MODIFICA" un post / pagina esistente o un tipo di post personalizzato. Qualche modifica suggerita per rendere questo lavoro corretto?
Ecco il mio codice attuale:
<?php
add_action('admin_init','load_admin_datapicker_script');
function load_admin_datapicker_script() {
global $pagenow, $typenow;
if (empty($typenow) && !empty($_GET['post'])) {
$post = get_post($_GET['post']);
$typenow = $post->post_type;
}
if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php' && $typenow=='events') {
$ss_url = get_bloginfo('stylesheet_directory');
wp_enqueue_script('jquery');
wp_enqueue_script('custom_js_jquery_ui',"{$ss_url}/admin-metabox/js/jquery-ui-1.7.1.custom.min.js",array('jquery'));
wp_enqueue_script('custom_js_daterangepicker',"{$ss_url}/admin-metabox/js/daterangepicker.jQuery.js",array('jquery'));
wp_enqueue_script('custom_js_custom',"{$ss_url}/admin-metabox/js/custom.js",array('jquery'),NULL,TRUE);
wp_enqueue_style('custom_css_daterangepicker',"{$ss_url}/admin-metabox/css/ui.daterangepicker.css");
wp_enqueue_style('custom_css_jquery_ui',"{$ss_url}/admin-metabox/css/redmond/jquery-ui-1.7.1.custom.css");
}
}
?>