에디터없이 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
그것은 모두 편집기와 밀접하게 연결되어 있으며, 링크 대화 상자는 편집기 클래스의 메소드로 작성되며이를 호출하는 스크립트에는 편집기 인스턴스가 필요합니다.
Milo

편집자없이 무엇을 의미합니까? 어디서 갖고 싶어?
Pmpr

테마 설정의 @Trix
Benn

고급 사용자 정의 필드의 관계 필드 : advancedcustomfields.com/resources/relationship 또는 사용자 정의 필드 스위트의 관계 필드 와 같은 것을 사용하는 것이 좋습니다
MikeNGarrett

답변:


7

이를 수행하는 윤리적 인 방법은 없습니다. 그러나 여전히이 작업을 수행 할 수있는 방법이 있습니다. WordPress는 wpLink 스크립트를 작성했습니다. 에디터는 있지만 에디터가 없을 때는 여전히 워드 프레스 핸들입니다 (Good Thing).

이 예제를 고려하여 바닥 글의 프런트 엔드에서 사용한다고 가정하십시오.

먼저 필수 스타일과 스크립트를 큐에 넣습니다.

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.