Intereting Posts
Json api не возвращает все метаданные получить сообщение id в add_filter () Godaddy маскировал перенаправление на блог WordPress Как удалить виджет Broken Link Checker из меню администратора Как изменить структуры URL в пользовательских типах сообщений и таксономии или терминах Установить сообщение с использованием короткого кода Сохранить критерии поиска для каждого пользователя и показать на пользовательской странице пользователя Включить таксономию в почтовый URL Как создать простой плагин для связанных сообщений Нужно ли сбросить запрос после использования get_posts ()? Как использовать различные заголовки для разных страниц с помощью этого шаблона? Как заставить WP правильно установить права доступа к каталогу? как передать wordpress sql / database из локального в live Довольно URL-адреса для пользовательского типа сообщения и пользовательской таксономии с дублирующимися слизнями на WPML Плагин для ввода китайских символов в сообщениях или страницах

Как я могу использовать встроенную функциональность WordPress «просматривать ссылки»?

Я кодирую виджет, и я бы хотел, чтобы пользователь мог выбрать ссылку, как вы можете, при редактировании обычных сообщений или страницы (когда вы нажимаете на значок маленькой ссылки и получаете функциональность поиска AJAX во всплывающем окне ). Кто-нибудь знает, как я работаю? У меня есть кнопка HTML, которую я хотел бы добавить и щелкнуть, и поле для ввода значения.

В классе-wp-editor.php я нашел несколько интересных вещей и задался вопросом, могут ли мне эти файлы …?

wp_enqueue_script('wp-fullscreen'); wp_enqueue_script('wplink'); 

При вызове fullscreen.link(); , как и файл, упомянутый выше, я получаю эту ошибку:

Uncaught ReferenceError: wpActiveEditor is not defined

.. и я сейчас в тупике, потому что JS, который ссылается на эту переменную, выглядит сумасшедшим для меня.

Позаботьтесь указать мне в правильном направлении? Я бы хотел, чтобы это работало, это сделает пользовательский интерфейс для моих виджетов!

введите описание изображения здесь

——редактировать——-

Пока что не так много кода, кроме включений сценария, о которых я говорил ранее;

 <label for="<?php echo $this->get_field_name('link'); ?>">Link URL (including http://) : </label> <input type="text" id="<?php echo $this->get_field_id('link'); ?>" name="<?php echo $this->get_field_name('link'); ?>" value="<?php if(isset($link)) echo esc_attr($link); ?>" class="widefat" /> <button class="secondary" id="choose_link">Link Browser</button> 

.. часть JS, которая должна запускать скрипт связи для открытия;

 linkBrowserButton.on("click", function(e){ e.preventDefault(); fullscreen.link(); }); 

Solutions Collecting From Web of "Как я могу использовать встроенную функциональность WordPress «просматривать ссылки»?"

Я вызываю диалог ссылок в классе метабокса, который я использую для разработки. Его немного хаки, но можно сделать, пока не будет развито нечто более прочное .

Вы можете вызвать окно ссылки, сначала введя требуемые js, а затем взаимодействуя с методами wp-link js files.

Убедитесь, что вы указали ссылку wp-link

1 / wp_enqueue_script( 'wp-link' );

2 / Настройте свой ui. Обычно я использую кнопку для вызова диалога ссылки и текстового поля для обработки URL-адреса ссылок.

3 / Вызов диалога ссылок

 var _link_sideload = false; //used to track whether or not the link dialogue actually existed on this page, ie was wp_editor invoked. var link_btn = (function($){ 'use strict'; var _link_sideload = false; //used to track whether or not the link dialogue actually existed on this page, ie was wp_editor invoked. /* PRIVATE METHODS -------------------------------------------------------------- */ //add event listeners function _init() { $('body').on('click', '.lm-link-button', function(event) { _addLinkListeners(); _link_sideload = false; var link_val_container = $('#your_input_field'); if ( typeof wpActiveEditor != 'undefined') { wpLink.open(); wpLink.textarea = $(link_val_container); } else { window.wpActiveEditor = true; _link_sideload = true; wpLink.open(); wpLink.textarea = $(link_val_container); } return false; }); } /* LINK EDITOR EVENT HACKS -------------------------------------------------------------- */ function _addLinkListeners() { $('body').on('click', '#wp-link-submit', function(event) { var linkAtts = wpLink.getAttrs(); var link_val_container = $('#your_input_field'); link_val_container.val(linkAtts.href); _removeLinkListeners(); return false; }); $('body').on('click', '#wp-link-cancel', function(event) { _removeLinkListeners(); return false; }); } function _removeLinkListeners() { if(_link_sideload){ if ( typeof wpActiveEditor != 'undefined') { wpActiveEditor = undefined; } } wpLink.close(); wpLink.textarea = $('html');//focus on document $('body').off('click', '#wp-link-submit'); $('body').off('click', '#wp-link-cancel'); } /* PUBLIC ACCESSOR METHODS -------------------------------------------------------------- */ return { init: _init, }; })(jQuery); // Initialise jQuery(document).ready(function($){ 'use strict'; link_btn.init(); }); 

4 // Записываем скрипты. Добавьте в свой файл functions.php следующее и настройте имена файлов / пути для соответствия.

 function linkbtn_enqueue() { //register script wp_register_script('link_btn',get_template_directory_uri() . '/js/link_btn.js', array('jquery'), '1.0', true); //now load it wp_enqueue_script( 'link_btn'); } add_action( 'admin_enqueue_scripts', 'linkbtn_enqueue' ); 

Должен это сделать. Я использую тот же подход в своем классе метабоксов и, похоже, работает нормально.

RE: «Как бы вы это сделали? (Примерно?)»

Во-первых, я бы построил его аналогично функциональности ссылок в WordPress: текстовое поле ввода, результаты, функция выбора и отправить (добавить ссылку).

Ajax – это загорается, когда текст вводится во вход, возвращая набор результатов на основе поискового запроса. Взгляните на то, что мы сделали с нашим плагином quicksearch , WP Jarvis. Вам просто нужно настроить вызов ajax для целевого ajaxurl (admin-ajax.php) и установить крючок действия на вашем php для выполнения запроса и повторить результаты в формате json. Вы хотите, чтобы результаты включали заголовок, пост-тип и постоянную ссылку для каждого результата. Подробнее о ajax в плагинах .

Наконец, выбирая интересующий вас результат, вы получите перманентную ссылку из объекта json и вставьте в поле виджетов.

Я знаю, что это не полный ответ, но я надеюсь, что это поможет.