web-dev-qa-db-ja.com

スタイルエディタをテーマエディタに表示する方法

テーマdir(css/style.css)のcssサブディレクトリに私のテーマのスタイルシートがあります。問題は、この.cssファイルをWordPress管理者のテーマエディタに表示する方法です。 (私はWebエディタを使うのは悪い考えであることを知っています、そして私は決してそれを使いません、しかしクライアントは特にこれを求めました)。

注:私のテーマエディタにデフォルトで表示される唯一のcssファイルはルートテーマディレクトリの 'style.css'ですが、これは私が必要とするものではありません。

3
NeuronQ

私はそれは不可能だと思います...

たとえば、ファイル/wp-admin/theme-editor.phpの中にフックがありません。

そして最後に大事なことを言い忘れたが、あなたがこれのうちの1つを試みるならば、それはエラーをダンプします:

  • /wp-admin/theme-editor.php?file=css%2Fstyle.css&theme=twentyeleven
  • /wp-admin/theme-editor.php?file=css/style.css&theme=twentyeleven

回避策を見つけた場合、このコードは目的のファイルへのリンクを挿入します。

/**
 * Adjust the if('Twenty Eleven' == sel) to your theme name
 */
add_action('admin_head-theme-editor.php', 'wpse_55949_script_enqueuer');

function wpse_55949_script_enqueuer(){
    echo <<<HTML
    <script type="text/javascript">
    jQuery(document).ready( function($) {
        var sel = $("#theme option:selected").text();
        if('Twenty Eleven' == sel) 
        {
            $('<li><a href="theme-editor.php?file=css/style.css&amp;theme=twentyeleven">Subfolder Stylesheet<br><span class="nonessential">(css/style.css)</span></a></li>').appendTo('#templateside ul:last');
        }
    });     
    </script>
HTML;
}

[更新]

代わりのアプローチは オプションページを作成する _クライアントがCSSを 書き込み/操作 することです。

1
brasofilo

それはあなたが思うかもしれないのと同じくらい簡単です。

あなたがクライアントに渡したかったすべてのセレクタは、追加のスタイルシートに配置します。 client-styles.css

このスタイルシートをcssフォルダ内ではなく、テーマルートに保存します。そのため、おそらく既に存在する style.css および editor-style.css を使用します。

style.css ファイルに@import "client-styles.css";を追加します(おそらく他にもルールがあります)。

/css/client-styles.cssから/client-styles.cssへのヘッダーの正しいリンク

彼らが注意深くなければ彼らがサイトを捨てることができることをクライアントに思い出させなさい(あなたが言ったように、彼らはこれを望んだ!).

0
Dan