Bagaimana cara menggunakan wpLink tanpa editor?

11

Saya ingin membuat opsi tema untuk menambahkan tautan. Memuat skrip ini dan memicu dialog berfungsi dengan baik jika ada editor 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;
});

tetapi bagaimana cara membuatnya menjadi kotak dialog tautan terbuka tanpa kehadiran editor?

Inilah yang saya cari

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Benn
sumber
2
Itu semua terkait erat dengan editor, dialog tautan dibangun oleh metode kelas editor, dan skrip yang memanggilnya membutuhkan instance editor.
Milo
apa maksudmu tanpa editor? di mana kamu ingin memilikinya?
Pmpr
@Trix dalam pengaturan tema
Benn
Anda lebih baik membangun sendiri atau menggunakan sesuatu seperti bidang hubungan Bidang Khusus Lanjutan: advancedcustomfields.com/resources/relationship atau bidang hubungan Kustom Bidang Suite: docs.customfieldsuite.com/field-types/relationship.html
MikeNGarrett

Jawaban:

7

Tidak ada cara etis untuk melakukan ini. Tetapi masih ada cara untuk melakukan ini. WordPress menulis skrip wpLink dengan mengingat bahwa editor ada tetapi WordPress tetap menangani ketika editor tidak ada (Good Thing)

Pertimbangkan contoh ini dan asumsikan bahwa kita menggunakannya di front-end di footer.

Pertama enqueue style dan skrip esensial.

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

Sekarang kaitkan fungsi ini di catatan kaki Baca komentar sebaris

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

Catatan: Ini tidak akan berfungsi ketika pengguna tidak masuk karena kesalahan js setUserSettingtidak didefinisikan dan tidak ada respons AJAX ketika pengguna tidak masuk.

Sumit
sumber
Entah bagaimana saya semua ini bekerja sebelumnya tanpa _WP_Editorskode, dan itu rusak. Jawaban Anda menyelamatkan hari itu - terima kasih!
random_user_name