エディターのスタイルとタイプキット


10

私のウェブサイトはタイプキットを使用してカスタムフォントを取得します。これはフロントエンドで機能します。

これをバックエンドのエディタースタイルに配置します。しかし、どうすればよいかわかりません。Typekitは、css font-face埋め込みスニペットではなくjs埋め込みスニペットを使用します。


これはstackoverflowに移行されることをお勧めします-これは実際にはWPの問題ではありません。
anu

2
それは私が一般的なケースでタイプキットを行う方法を知っているからです。私がやろうとしていることは、それをWordPressエディターに入れることです。それがスタックオーバーフローに移されると、「うーん、これはWordPressの質問= sです」という人がたくさんいます
トムJノウェル

回答:


3

Tom NowellのTinyMCEプラグインソリューションは見事に機能し、JavaScriptを更新して使用します Typekitの新しい非同期コードです。新しい非同期埋め込みコードを使用すると、403の問題が解消され、Typekit対応のTinyMCEが手軽に利用できるようになります。

トムはすべてのコードをブログ投稿にまとめました。彼はこれについてすべての面倒な作業を行ったので、ページビューをいくつか与え、そこで詳細読んでください


します?(私は尋ねましたと答えました= p)私の解決策はそれがセキュリティのためではなかった場合に機能します、私がそれが機能する同じドメインの空白ページにiframeのsrcを設定できた場合、私は新しい非同期コードをテストしますでも!
トムJノーウェル

うん、それはそうです!=]
トムJノーウェル

完全を期すために、私のコードの更新されたバージョンで回答を変更できますか?
トムJノーウェル

私はここにブログ投稿を書きました:tomjn.com/150/typekit-wp-editor-stylesに要旨のコードがあります。非同期ビットを理解したことで信用できるTwitterアカウントがありますか?
トムJノーウェル

回答を更新してブログ投稿にリンクします。あなたはここで重い仕事をしました!
Chris Van Patten

6

私はtinymceプラグインを追加することでこれを回避しました、それはほとんどそこにありますが、タイプキットからフォントCSSを取得しようとするとき、私は403が禁止されます:

js:

(function() {
    tinymce.create('tinymce.plugins.typekit', {
        init: function(ed, url) {
            ed.onPreInit.add(function(ed) {

                // Get the DOM document object for the IFRAME
                var doc = ed.getDoc();

                // Create the script we will add to the header asynchronously
                var jscript = "var TypekitConfig = {\n\
                    kitId: '*******'\n\
                    };\n\
                    (function() {\n\
                    var tk = document.createElement('script');\n\
                    tk.src = '//use.typekit.com/' + TypekitConfig.kitId + '.js';\n\
                    tk.type = 'text/javascript';\n\
                    tk.async = 'true';\n\
                    tk.onload = tk.onreadystatechange = function() {\n\
                    var rs = this.readyState;\n\
                    if (rs && rs != 'complete' && rs != 'loaded') return;\n\
                    try { Typekit.load(TypekitConfig); } catch (e) {}\n\
                    };\n\
                    var s = document.getElementsByTagName('script')[0];\n\
                    s.parentNode.insertBefore(tk, s);\n\
                })();";

                // Create a script element and insert the TypeKit code into it
                var script = doc.createElement("script");
                script.type = "text/javascript";
                script.appendChild(doc.createTextNode(jscript));

                // Add the script to the header
                doc.getElementsByTagName('head')[0].appendChild(script);

            });

        },
        getInfo: function() {
            return {
                longname: 'TypeKit For TinyMCE',
                author: 'Tom J Nowell',
                authorurl: 'http://tomjn.com/',
                infourl: 'http://twitter.com/tarendai',
                version: "1.0"
            };
        }
    });
    tinymce.PluginManager.add('typekit', tinymce.plugins.typekit);
})();

PHP

add_filter("mce_external_plugins", "tomjn_mce_external_plugins");
function tomjn_mce_external_plugins($plugin_array){
    $plugin_array['typekit']  =  get_template_directory_uri().'/typekit.tinymce.js';
    return $plugin_array;
}

これは完全にうまくいきました。それは少しの仕事と忍耐を必要としますが、それは本当にうまくいきます!
racl101 2012

0

スクリプトを管理者用にキューに入れると、editor.cssで使用できるようになります。

    add_action( 'admin_print_scripts', 'admin_typekit' );
    function admin_typekit( ) {
         global $pagenow;
         $arg = array( 'post.php', 'post-new.php', 'page-new.php', 'page.php' );
         if ( ! in_array( $pagenow, $arg ))
                return; ?>

          <script type="text/javascript">
              (function () {
                 var config = {
               kitId:'xxxxxx',
               scriptTimeout:3000
               };
               var h = document.getElementsByTagName("html")[0];
               h.className += " wf-loading";
               var t = setTimeout(function () {
               h.className = h.className.replace(/( |^)wf-loading( |$)/g, "");
               h.className += " wf-inactive"
               }, config.scriptTimeout);
               var tk = document.createElement("script");
               tk.src = '//use.typekit.net/' + config.kitId + '.js';
               tk.type = "text/javascript";
               tk.async = "true";
               tk.onload = tk.onreadystatechange = function () {
           var a = this.readyState;
            if (a && a != "complete" && a != "loaded")return;
               clearTimeout(t);
                try {
                  Typekit.load(config)
                } catch (b) { } };
                var s = document.getElementsByTagName("script")[0];
                s.parentNode.insertBefore(tk, s)
             })();
             </script>

   <?php }

編集:

あなたが述べたようにいくつかのインラインjsを必要とするため、タイプキットの上記のコードを更新しました。また、admin_enqueue_scriptsを使用していないため、$ hook変数を$ pagenowに変更する必要があります。


それほど単純ではありませんが、それはインラインスクリプトですが、CSSがそれをピックアップするのに十分な場合は、adminに追加すると機能します=]
Tom J Nowell

これは実際には機能しません。セミコロンと閉じ括弧がないことを除いて、修正するとフォントが投稿編集画面に追加され、WordPress UIを変更できますが、エディタースタイルでフォントを使用できません。私の投稿コンテンツはタイプキットフォントの使用を拒否し、代わりに次の利用可能な代替フォントで表示します。
トムJノーウェル

表示されるJS自体は、WordPress投稿UIをロードする親フレームではなく、tinyMCEが使用するiframeに挿入する必要があります
Tom J Nowell

CSSをeditor-style.cssにコピーすることで、CSSファイルが禁止される問題を修正できました。それは非常にハッキーな修正ですが、私が他のすべてを試してみた後、それはうまくいきました。
コール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.