Thêm lớp CSS để liên kết trong trình soạn thảo TinyMCE


8

Khi tìm kiếm giải pháp, tôi đã tìm thấy plugin để cho phép thả xuống các kiểu CSS đã có trong biểu định kiểu. Điều tôi muốn là cho phép trình soạn thảo thêm Lớp CSS từ hộp văn bản. Vì vậy, nếu bạn xem xét hình ảnh này:

nhập mô tả hình ảnh ở đây

Điều tôi lý tưởng tìm kiếm là một cách để có được một hộp văn bản khác trong đó bên dưới Tiêu đề gọi là Lớp . Sự tự do để nhập một lớp CSS là cần thiết cho các chức năng khác trong trang web. Bất kỳ ý tưởng về làm thế nào tôi có thể đạt được điều này?

Cảm ơn nhiều!

Câu trả lời:


20

Một tùy chọn là thêm một lớp vào menu Styleselect trong MCE. Được điều chỉnh từ trang Codex "TinyMCE Custom Styles" trước tiên bạn cần thêm kiểu chọn vào trình chỉnh sửa:

// Callback function to insert 'styleselect' into the $buttons array
function my_mce_buttons_2( $buttons ) {
    array_unshift( $buttons, 'styleselect' );
    return $buttons;
}
// Register our callback to the appropriate filter
add_filter('mce_buttons_2', 'my_mce_buttons_2');

Điều đó sẽ thêm trình đơn mới thả xuống trình chỉnh sửa. Sau đó, bạn tạo kiểu tùy chỉnh của mình:

// Callback function to filter the MCE settings
function my_mce_before_init_insert_formats( $init_array ) {  
    // Define the style_formats array
    $style_formats = array(  
        // Each array child is a format with it's own settings
        array(  
            'title' => 'My Link Custom Class',  
            'selector' => 'a',  
            'classes' => 'my-custom-link-class'             
        )
    );  
    // Insert the array, JSON ENCODED, into 'style_formats'
    $init_array['style_formats'] = json_encode( $style_formats );  

    return $init_array;  

} 
// Attach callback to 'tiny_mce_before_init' 
add_filter( 'tiny_mce_before_init', 'my_mce_before_init_insert_formats' );

Kể từ WordPress 3.9 bao gồm nâng cấp lên TinyMCE 4.0, kiểu chọn mạnh mẽ hơn nhiều và bao gồm selectorquy tắc đó có nghĩa là bạn có thể xác định các kiểu chỉ có thể áp dụng cho các liên kết. Nó khá đẹp.

Giải pháp này có nghĩa là bạn có thể xác định trước các lớp bạn cần và đảm bảo không bao giờ có lỗi chính tả hoặc các vấn đề khác.

Như Codex lưu ý, điều này được kết hợp tốt nhất với một editor-style.csstệp tốt sẽ áp dụng các kiểu của bạn trực tiếp trong trình chỉnh sửa.


Xin chào ông. Cảm ơn câu trả lời của bạn, mặc dù không hoàn toàn những gì tôi đang tìm kiếm. Tôi không có ý định chọn một lớp từ danh sách các lớp được xác định trước. Thay vào đó, tôi chỉ cần cho phép trình soạn thảo gõ tên lớp. Về cơ bản, tôi đã sử dụng plugin Lime Modal từ CodeCanyon và điều này đòi hỏi liên kết kích hoạt sử dụng một tên lớp giống như tên duy nhất của phương thức.
maGz

Điều này rất thú vị, tôi thích phương pháp này, nhưng có cách nào để thêm tùy chọn mới vào với các mục thả xuống khác (ví dụ đoạn, tiêu đề 1, v.v.).
JacobTheDev

1
Tôi không chắc lắm, @rev. Một điều tôi thích là chiến lược này thường cho phép bạn tách các phần tử HTML ngữ nghĩa khỏi các kiểu CSS hướng theo lớp (hy vọng vẫn còn ngữ nghĩa). Tôi không có thời gian để làm điều này ngay bây giờ, nhưng chỉ cần cố gắng var_dump()ing $init_arraytrên và xem những gì ở đó. Hãy nhớ rằng bản cập nhật TinyMCE 4.0 trong WordPress 3.9 đã khiến rất nhiều hướng dẫn và tài liệu hiện có bị sai. Kiểm tra ngày khi nghiên cứu.
mrwweb

Ah, tôi thấy lợi ích trong việc giữ nó tách biệt. Tôi chỉ do dự trong việc thêm một thả xuống hoàn toàn mới chỉ để thêm một lớp mới, haha. Tôi sẽ xem xét đề nghị của bạn, cảm ơn.
JacobTheDev

Tôi nghe bạn. Khi tôi làm điều này, tôi loại bỏ formatselectvà chuyển hoàn toàn sang styleselecttất cả các thành phần khối và kiểu văn bản.
mrwweb

1

Tôi đã có thể giải quyết điều này bằng cách thêm plugin WP Edit vào trang web của mình. Nó có nút Liên kết nâng cao , cho phép tôi (hoặc trình chỉnh sửa) nhập thủ công tên lớp.


Nhà phát triển của WP Chỉnh sửa tại đây. Cảm ơn bạn đã đăng bài mà các plugin đã giúp bạn. Xin vui lòng cho tôi biết nếu bạn có bất kỳ câu hỏi liên quan đến việc sử dụng.
Josh

Hey cảm ơn josh! Chỉ cần bắt đầu sử dụng nó vì vậy tôi sẽ cho bạn biết. Càng xa càng tốt!
maGz
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.