개발에 사용하는 메타 박스 클래스 내에서 링크 대화 상자를 호출합니다. 좀 해킹 적이지만 더 강력한 무언가 가 개발 될 때까지 수행 할 수 있습니다 .
먼저 필요한 js를 큐에 넣은 후 wp-link js 파일 메소드와 상호 작용하여 링크 상자를 호출 할 수 있습니다.
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' );
해야 돼. 메타 박스 클래스에서 동일한 접근 방식을 사용하는데 제대로 작동하는 것 같습니다.