如何使用WordPress内置的“浏览链接”功能?

时间:2013-12-19 作者:Dan

我正在编写一个小部件,我希望用户能够在编辑常规帖子或页面时像您一样选择链接(当您单击小链接图标时,弹出窗口中会显示AJAX搜索功能)。有人知道我是怎么做到的吗?我有一个HTML按钮,我想附加它并单击它,还有一个字段用于输入值。

类内wp编辑器。php我发现了一些有趣的东西,想知道我是否需要这些文件。。?

wp_enqueue_script(\'wp-fullscreen\');
wp_enqueue_script(\'wplink\');
通话时fullscreen.link();,像上面提到的文件一样,我得到了以下错误:

Uncaught ReferenceError: wpActiveEditor is not defined

..现在我很困惑,因为引用该变量的JS看起来很疯狂。

能给我指出正确的方向吗?我很想让它工作起来,它将成为我的小部件的杀手级用户界面!

enter image description here

------编辑-------

除了我之前提到的脚本之外,到目前为止没有那么多代码;

<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();
});

2 个回复
SO网友:Dale Sattler

我调用用于开发的metabox类中的链接对话框。这有点老套,但可以做到,直到更多robust 已开发。

您可以通过首先Enquence所需的js,然后与wp link js files方法交互来调用链接框。

确保已将wp链接排入队列

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//将脚本排队。将以下内容添加到函数中。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\' );
应该这样做。我在我的metabox类中使用了相同的方法,它似乎工作正常。

SO网友:MikeNGarrett

回复:“你会怎么做?(大致?)”

首先,我将构建它类似于WordPress中的链接功能:输入文本字段、结果、选择功能和提交(添加链接)按钮。

Ajax—当文本输入到输入中时,将触发此操作,并根据搜索词返回一组结果。看看我们做了什么our quicksearch plugin, WP Jarvis。您只需设置ajax调用以实现ajaxurl(admin ajax.php),并在php中设置一个操作挂钩来执行查询并以json格式回显结果。您希望结果包括每个结果的标题、帖子类型和永久链接。了解更多信息ajax in plugins.

最后,选择您感兴趣的结果将从json对象中获取永久链接并插入到小部件字段中。

我知道这不是一个完整的答案,但我希望这能有所帮助。

结束

相关推荐

Hiding Media Source Links

我从WordPress媒体(添加媒体->媒体库->链接到=无)在页面上插入了一个图像。然而,当我右键单击页面查看源代码时,我注意到媒体的地址。如何隐藏此地址?我认为WordPress站点所在的文件夹(my\\u重命名的WordPress\\u目录)很容易看到,这是一种安全风险。我该如何隐藏这个?添加图像时,我选择Link To: None. 我们将不胜感激。谢谢<a href=\"http://mysite.com/\" target=\"_blank\"><img src=