Kiểu soạn thảo và Typekit


10

Trang web của tôi sử dụng typekit để lấy các phông chữ tùy chỉnh, hoạt động trên frontend.

Tôi muốn đặt cái này trong các kiểu soạn thảo của mình trong phần phụ trợ. Tuy nhiên, tôi không biết làm thế nào tôi sẽ làm điều này. Typekit sử dụng đoạn mã nhúng js thay vì đoạn mã nhúng mặt chữ css.


đề nghị điều này được chuyển sang stackoverflow - nó không thực sự là vấn đề của WP.
anu

2
Đó là bởi vì tôi biết cách làm typekit trong trường hợp chung. Những gì tôi đang cố gắng làm là đưa nó vào trình chỉnh sửa WordPress. Nếu nó được chuyển sang Stack Overflow, sẽ có rất nhiều người sẽ "hmmm nhưng đây là một câu hỏi WordPress = s"
Tom J Nowell

Câu trả lời:


3

Giải pháp plugin TinyMCE của Tom Nowell hoạt động tuyệt vời, chỉ cần cập nhật JavaScript để sử dụng mã async mới của Typekit . Khi bạn sử dụng mã nhúng async mới, vấn đề 403 sẽ biến mất và bạn sẽ có TinyMCE hỗ trợ Typekit mà không phải lo lắng!

Tom đã đặt tất cả các mã với nhau trong một bài viết trên blog. Anh ấy đã làm tất cả những việc nặng nề về việc này, vì vậy hãy đưa cho anh ấy một số lượt xem trang và đọc chi tiết cụ thể ở đó !


Nó không? (Tôi đã hỏi và trả lời = p) giải pháp của tôi sẽ hoạt động nếu không bảo mật, nếu tôi có thể đặt src của iframe thành một trang trống trên cùng một tên miền thì nó sẽ hoạt động, tôi sẽ kiểm tra mã async mới Tuy nhiên!
Tom J Nowell

Vâng huzzah nó làm !! =]
Tom J Nowell

Bạn có thể sửa đổi câu trả lời của bạn với phiên bản cập nhật của mã của tôi chỉ cho đầy đủ không?
Tom J Nowell

Tôi đã viết một blogpost ở đây: tomjn.com/150/typekit-wp-editor-ststyle với mã trong các ý chính, bạn có tài khoản twitter nào tôi có thể ghi có cho bạn để tìm ra bit async không?
Tom J Nowell

Tôi sẽ cập nhật câu trả lời của tôi để liên kết đến bài viết trên blog của bạn. Bạn đã làm việc nặng ở đây!
Chris Van Patten

6

Tôi đã khắc phục điều này bằng cách thêm một plugin tinymce, nó gần như ở đó nhưng tôi bị cấm 403 khi nó cố lấy lại phông chữ css từ typekit:

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;
}

Điều này hoàn toàn làm việc cho tôi. Nó đòi hỏi một chút công việc và sự kiên nhẫn nhưng nó hoạt động thực sự tốt!
racl101

0

Bạn có thể liệt kê tập lệnh cho quản trị viên, sau đó nó sẽ có sẵn cho trình soạn thảo của bạn.

    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 }

Biên tập:

Đã cập nhật mã ở trên cho typekit vì nó yêu cầu một số js nội tuyến như bạn đã đề cập. Chúng tôi cũng phải thay đổi biến $ hook thành $ pagenow vì không sử dụng admin_enqueue_scripts.


Không đơn giản như vậy, đó là tập lệnh nội tuyến, nhưng nếu thêm nó vào quản trị viên là đủ để css chọn nó thì nó sẽ hoạt động =]
Tom J Nowell

Điều này không thực sự hoạt động. Ngoài dấu chấm phẩy bị thiếu và dấu ngoặc đóng, sau khi sửa, nó thêm phông chữ vào màn hình chỉnh sửa bài đăng, tôi có thể thay đổi giao diện người dùng WordPress, nhưng tôi không thể sử dụng phông chữ trong các kiểu trình soạn thảo. Nội dung bài đăng của tôi từ chối sử dụng phông chữ typekit và thay vào đó hiển thị trong bất kỳ phông chữ dự phòng tiếp theo nào có sẵn.
Tom J Nowell

Bản thân JS sẽ xuất hiện nhu cầu chèn vào iframe tinyMCE sử dụng, chứ không phải khung chính tải giao diện người dùng bài đăng WordPress
Tom J Nowell

Tôi đã có thể khắc phục sự cố tệp CSS bị cấm bằng cách sao chép css vào trình soạn thảo-style.css của tôi. Đây là một bản sửa lỗi siêu hack nhưng nó đã hoạt động, sau khi tôi đã thử mọi thứ khác.
Cole
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.