วิธีการใช้ wpLink ไม่มีตัวแก้ไข?


11

ฉันต้องการสร้างตัวเลือกชุดรูปแบบเพื่อเพิ่มลิงค์ กำลังโหลดสคริปต์เหล่านี้และเรียกใช้กล่องโต้ตอบทำงานได้ดีหากมีตัวแก้ไข 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;
});

แต่จะทำให้กล่องโต้ตอบเปิดลิงก์โดยไม่มีตัวแก้ไขอยู่ได้อย่างไร

นี่คือสิ่งที่ฉันเป็น

ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่


2
ทุกอย่างเชื่อมโยงกับตัวแก้ไขอย่างแน่นหนากล่องโต้ตอบการเชื่อมโยงถูกสร้างขึ้นโดยวิธีการของคลาสตัวแก้ไขและสคริปต์ที่เรียกใช้นั้นต้องการอินสแตนซ์ของตัวแก้ไข
Milo

คุณหมายถึงอะไรหากไม่มีเครื่องมือแก้ไข คุณต้องการมีที่ไหน
PMP

@Trix ในการตั้งค่าชุดรูปแบบ
Benn

คุณควรสร้างของคุณเองหรือใช้สิ่งต่าง ๆ เช่นฟิลด์ความสัมพันธ์ของ Advanced Custom Field: advancedcustomfields.com/resources/relationshipหรือฟิลด์ความสัมพันธ์ของ Custom Field Suite: docs.customfieldsuite.com/field-types/relationship.html
MikeNGarrett

คำตอบ:


7

ไม่มีวิธีการทางจริยธรรมในการทำเช่นนี้ แต่ก็ยังมีวิธีการทำเช่นนี้ WordPress เขียนสคริปต์ wpLink โดยคำนึงถึงตัวแก้ไขว่ายังมี แต่ WordPress จัดการเมื่อตัวแก้ไขไม่อยู่ที่นั่น(สิ่งที่ดี)

ลองพิจารณาตัวอย่างนี้และสมมติว่าเราใช้มันในส่วนหน้าในส่วนท้าย

ก่อนอื่นต้องจัดให้มีสไตล์และสคริปต์ที่จำเป็น

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

ตอนนี้ขอฟังก์ชั่นนี้ในส่วนท้ายอ่านความคิดเห็นแบบอินไลน์

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');

หมายเหตุ:มันจะไม่ทำงานเมื่อผู้ใช้ไม่ได้เข้าสู่ระบบเนื่องจากข้อผิดพลาด js setUserSettingไม่ได้กำหนดไว้และไม่มีการตอบสนอง AJAX เมื่อผู้ใช้ไม่ได้เข้าสู่ระบบ


อย่างใดฉันมีทั้งหมดนี้ทำงานก่อนหน้าโดยไม่มี_WP_Editorsรหัสและมันยากจน คำตอบของคุณบันทึกไว้ในวันนี้ - ขอบคุณ!
random_user_name
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.