Как использовать 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
Все это довольно тесно связано с редактором, диалоговое окно ссылки создается методом класса редактора, а сценарию, который его вызывает, нужен экземпляр редактора.
Мило

что ты имеешь в виду без редактора? где ты хочешь это иметь?
Pmpr

@Trix в настройках темы
Бенн

Вам лучше создать свое собственное или использовать что-то вроде поля отношений Advanced Custom Field: advancedcustomfields.com/resources/relationship или поля отношений Custom Field Suite: docs.customfieldsuite.com/field-types/relationship.html
MikeNGarrett

Ответы:


7

Нет этического способа сделать это. Но все же есть способ сделать это. WordPress написал скрипт wpLink, помня о том, что редактор есть, но все еще обрабатывает WordPress, когда его нет (Хорошая вещь)

Рассмотрим этот пример и предположим, что мы используем его в front-end в нижнем колонтитуле.

Сначала поставьте в очередь необходимый стиль и сценарии.

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.