Làm thế nào để sử dụng wpLink mà không cần trình chỉnh sửa?


11

Tôi muốn tạo tùy chọn chủ đề để thêm một liên kết. Tải các tập lệnh này và kích hoạt hộp thoại hoạt động tốt nếu có trình soạn thảo wp.

wp_enqueue_script('wplink');
wp_enqueue_script('wpdialogs');
wp_enqueue_script('wpdialogs-popup');
wp_enqueue_style('wp-jquery-ui-dialog');
wp_enqueue_style('thickbox');

wp_editor('', 'unique_id', array('editor_class'=>'hidden'));



$('.add-link').on("click", function(e){
    e.preventDefault();

      wpLink.open();
      return false;
});

Nhưng làm thế nào để làm cho nó mở hộp thoại liên kết mà không có trình soạn thảo?

Đây là những gì tôi đang theo đuổi

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


2
Tất cả đều được gắn khá chặt chẽ với trình soạn thảo, hộp thoại liên kết được xây dựng theo một phương thức của lớp trình soạn thảo và tập lệnh gọi nó cần một cá thể trình soạn thảo.
Milo

Bạn có ý nghĩa gì khi không có biên tập viên? bạn muốn có nó ở đâu
Pmpr

@Trix trong cài đặt chủ đề
Benn

Tốt hơn hết là bạn nên tự xây dựng hoặc sử dụng thứ gì đó như trường mối quan hệ của Trường tùy chỉnh nâng cao: advancedcustomfields.com/resource/relationship hoặc Trường mối quan hệ của Custom Field Suite: docs.customfieldsuite.com/field-types/relationship.html
MikeNGarrett

Câu trả lời:


7

Không có cách đạo đức để làm điều này. Nhưng vẫn có một cách để làm điều này. WordPress đã viết tập lệnh wpLink, hãy nhớ rằng trình chỉnh sửa vẫn còn nhưng WordPress vẫn xử lý khi không có trình chỉnh sửa (Điều tốt)

Xem xét ví dụ này và giả sử rằng chúng tôi đang sử dụng nó trên front-end ở chân trang.

Đầu tiên enqueue phong cách cần thiết và các kịch bản.

function enqueue_scripts_209490() {
    wp_enqueue_script('wplink');
    wp_enqueue_style( 'editor-buttons' );
}
add_action('wp_enqueue_scripts', 'enqueue_scripts_209490');

Bây giờ móc chức năng này ở chân trang Đọc các bình luận nội tuyến

function display_wplink_html_209490() {
    //Our textarea, click to open the link edior and insert the link in same editor
    echo '<textarea id="example_209490"></textarea>';

    // Require the core editor class so we can call wp_link_dialog function to print the HTML.
    // Luckly it is public static method ;)
    require_once ABSPATH . "wp-includes/class-wp-editor.php";
    _WP_Editors::wp_link_dialog(); ?>

    <script type="text/javascript">
        /* We need ajaxurl to send ajax to retrive links */
        var ajaxurl = "<?php echo admin_url( 'admin-ajax.php'); ?>";
        jQuery(document).ready(function (){
            jQuery('#example_209490').click(function (){
                wpLink.open('example_209490'); /* Bind to open link editor! */
            });
        })
    </script><?php
}
add_action('wp_footer', 'display_wplink_html_209490');

Lưu ý: Nó sẽ không hoạt động khi người dùng chưa đăng nhập vì lỗi js setUserSettingkhông được xác định và không có phản hồi AJAX khi người dùng không đăng nhập.


Bằng cách nào đó tôi đã có tất cả điều này làm việc sớm hơn mà không có _WP_Editorsmã, và nó đã bị hỏng. Câu trả lời của bạn đã lưu trong ngày - cảm ơn bạn!
cale_b
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.