web-dev-qa-db-ja.com

カスタムテーマオプションの管理画面にCSSとJSを含める

テーマオプションページでカスタムテーマを作成しています。

オプションページをスタイルしたいのですが、インラインスタイルを含めたくありません。 sayから外部スタイルシートを含める方法はありますか

TEMPLATEPATH . '/css/admin.css'

私はまたこのコードの塊を見つけました、そしてそれはうまくいくようです - link

function admin_register_head() {
 $siteurl = get_option('siteurl');
 $url = $siteurl . '/wp-content/plugins/' . basename(dirname(__FILE__)) . '/yourstyle.css';
 echo "<link rel='stylesheet' type='text/css' href='$url' />\n";
}
add_action('admin_head', 'admin_register_head');

最善の方法は何ですか?

4
abrudtkuhl

管理テーマプラグインを作成する - Codexの手順から、上記のようにスタイルシートを挿入しないように指示されていることに気づくでしょう。

あなたがあなたの管理用テーマファイルの中に次のものを置いた場合、それは同じ目的を果たすでしょうが、 wp_enqueue_styles アプローチを使います:

function add_admin_theme_styles() {
    wp_register_style($handle = 'mytheme-theme-admin-styles', $src = plugins_url('wp-admin.css', __FILE__), $deps = array(), $ver = '1.0.0', $media = 'all');
    wp_enqueue_style('mytheme-theme-admin-styles');}
    add_action('admin_print_styles', 'add_admin_theme_styles');
3
davemac

add_submenu_pageまたは他のadd_{TYPE}_page関数のいずれかを使用して管理領域にページを登録するとき、4番目のパラメータは一意の識別子を受け入れます。この識別子はあなたの登録ページが使用するフックを指定します。

私はオプションを登録することになっていた場合例えば:

add_options_page( 'Example Plugin Options', 'Example Plugin', 'manage_options', 'example-plugin-identifier', 'example_plugin_options' );

そのページにはさまざまなフックが明確に用意されています。ここで、現在登録されているページに対して可能なアクションをいくつか紹介します。

// load-{HANDLE}
add_action( 'load-example-plugin-identifier', 'example_plugin_callback' );
// admin_head-{HANDLE}
add_action( 'admin_head-example-plugin-identifier', 'example_plugin_callback' );
// admin_print_scripts-{HANDLE}
add_action( 'admin_print_scripts-example-plugin-identifier', 'example_plugin_callback' );
// admin_print_styles-{HANDLE}
add_action( 'admin_print_styles-example-plugin-identifier', 'example_plugin_callback' );

function example_plugin_callback() {

    // Run your code here

}

admin_enqueue_scriptsフックもあります。これは、コールバック関数に渡す文字列/変数内の現在のハンドルの名前を提供します。

add_action( 'admin_enqueue_scripts', 'example_plugin_callback' );

function example_plugin_callback( $handle ) {

    // If the handle is not the page registered earlier, return
    if( 'example-plugin-identifier' =! $handle )
        return;

    // Run your code here

}

- /管理ページをターゲットにしたり、登録済みの特定のページをターゲットにしたりするために条件付きロジックを実行したりしない限り、通常はadmin_headadmin_print_scriptsadmin_print_stylesを使用する必要はありません。

それが役立ちます願っています..

4
t31os

WPはスクリプトとスタイル用のキューを提供します。 URLのバージョン管理、依存関係の自動ロードなどが可能です。

あなたのスタイルを正しく登録し、必要なところだけにロードする方法については、Codexの wp enqueue style() を参照してください(あなたのカスタムページで、管理領域の全てではありません)。

3
Rarst

うん私は私自身の質問に答えています...しかし私はそれを機能させることができました。

このアクションをあなたのテーマのfunctions.phpファイルに追加してください

function admin_register_head() {
    $url = get_bloginfo('template_directory') . '/css/admin.css';
    echo "<link rel='stylesheet' type='text/css' href='$url' />\n";
}
add_action('admin_head', 'admin_register_head');
1
abrudtkuhl