したがって、私はこの問題に引き続き取り組み、この問題を解決するための最良かつ最も簡単なソリューションを探しています。
私は多くの異なるプロジェクトでカスタム投稿タイプを利用するようになり、jQueryイベントカレンダーセレクターなどのカスタムスクリプトを追加することでさらに拡張したカスタムメタボックスでこれらを拡張しました。 ...これらのカスタムjQueryスクリプトを管理者のすべてのページにロードしたくない。
基本的に、特定の投稿タイプの「投稿の編集」ページにいるときに、これらのカスタムjqueryフィールドをロードする方法を探しています。
ここで最善の解決策は何ですか?
更新1
まず第一に、どうもありがとうございました。
プラグイン開発者がこのようなことを確認していないことに実際にショックを受けています。これは、さまざまなプラグインに問題が存在する主な理由の1つだからです。
私はこれでいくつかのさらなる問題を抱えています。例えば...
次のようなifステートメントを呼び出すようにスクリプトを変更しました。
if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php' && $typenow=='events')
ご覧のように、「イベント」の投稿タイプ内で投稿を追加または編集するときにのみスクリプトが呼び出されるように設定しようとしています。
スクリプトを他のページにロードしたくないし、「イベント」の投稿タイプ内のページのリストで実行したくないので、ifステートメントが正しいと思います。
ただし、問題は、この投稿タイプ内で新しい投稿を作成するときにのみスクリプトが読み込まれるように見えるが、既存の投稿を編集しているときは動作しないようです。
これをテストして、間違っている可能性があることを教えてください。
ここに私が使用している正確なコードがあります...これを行うためのより良いまたは簡単な方法がありますか?
<?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");
}
}
また... 3つの投稿タイプを追加し、投稿タイプごとに異なるJSスクリプトをロードしたい場合、上記のコードを3回別々に複製するか、これは良い方法ではありませんか?たとえば、次のように呼び出す方が良いでしょう:global $ pagenow、$ typenow; 関数ファイルの一番上にあるのか、それを複数回複製するときに問題になるのですか、それとも複雑になりますか?
同じことに関連する別の問題について...たとえば、「重力フォーム」プラグインを使用していますが、管理者のすべてのページでスクリプトが実行され、他のプラグインで問題が発生していることに気付きました。スクリプトが必要な場合にのみロードされるように、スクリプトを変更するにはどうすればよいですか。
更新2
Mikeが提供するコード(下記)を使用して、functions.phpファイルを変更しましたが、新しい投稿またはページを作成するときに、適切なjavascriptがまだ含まれているようです。これは、新しいデフォルトのワードプレスの投稿/ページを作成して新しい投稿またはページを作成しようとしたとき、またはカスタム投稿タイプのいずれかに基づいて新しい投稿/ページを作成したときを意味します。Mikeが提案したコードは、他のすべての管理ページで機能し、既存の投稿/ページまたはカスタム投稿タイプを「編集」するときに機能します。この作業を正しくするために提案された変更はありますか?
ここに私の現在のコードがあります:
<?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");
}
}
?>