如何在没有编辑器的情况下使用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在主题设置中
Benn

您最好自己构建或使用类似高级自定义字段的关系字段:advancedcustomfields.com/resources/relationship或自定义字段套件的关系字段:docs.customfieldsuite.com/field-types/relationship.html
MikeNGarrett

Answers:


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');

注意:由于setUserSetting未定义js错误而导致 用户未登录且用户未登录时没有AJAX响应时,该功能将不起作用。


不知何故,我在没有_WP_Editors代码的情况下就可以使所有这些工作正常了,并且它坏了。您的答案挽救了这一天-谢谢!
random_user_name
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.