Як користуватися 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
Все це досить прив’язано до редактора, діалог посилань будується методом класу редактора, а сценарій, який викликає його, потребує екземпляра редактора.
Міло

що ти означає без редактора? де ти хочеш це мати?
Пмпр

@Trix в налаштуваннях тем
Бенн

Вам краще створити своє власне або використовувати щось на кшталт поля взаємозв’язку Advanced Custom Field: Advancedcustomfields.com/resources/relationship або поле відносин для користувальницьких польових пакетів
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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.