首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在url中添加Target ="_blank“的钩子/过滤器

在url中添加Target ="_blank“的钩子/过滤器
EN

Stack Overflow用户
提问于 2018-07-06 01:45:10
回答 1查看 785关注 0票数 0

我已经试了6个小时了,似乎什么都不管用。我想在Wordpress编辑器-TinyMce内的一个按钮上添加target="_blank“。

以下是我到目前为止所做的:

参考https://wordpress.stackexchange.com/questions/141344/add-button-in-tinymce-editor-to-insert-text

functions.php

代码语言:javascript
复制
    add_action( 'init', 'droid_buttons' );
function droid_buttons() {
    add_filter( "mce_external_plugins", "droid_add_buttons" );
    add_filter( 'mce_buttons', 'droid_register_buttons' );
}

function droid_add_buttons( $plugin_array ) {
    $plugin_array['droid'] = get_template_directory_uri() . '/js/text-button.js';
    echo get_template_directory_uri();
    return $plugin_array;
}

function droid_register_buttons( $buttons ) {
    array_push( $buttons, 'droid_title'); // droid_title
    return $buttons;
}

text-button.js

代码语言:javascript
复制
    (function() {
    tinymce.create('tinymce.plugins.Droid', {
    init : function(editor, url) {
    editor.addButton('droid_title', {
    title : 'Droid Title',
    cmd : 'droid_title',
    image : ''
    });

    editor.addCommand('droid_title', function() {
    var selected_text = editor.selection.getContent();
    var element = "http://www.google.com";
    var return_text = "";
    return_text = '<a href="'+element+'" class="droid_title" target="_blank">' + selected_text + '</span>';
    editor.execCommand('mceInsertContent', 0, return_text);
    });

    },

    });

    // Register plugin
    tinymce.PluginManager.add( 'droid', tinymce.plugins.Droid );
})();

因此,在我的functions.php文件和-Button.js文件中添加了上述代码后,它在wordpress编辑器中添加了一个按钮,以便在所选文本中插入的链接之上添加按钮。

当我在编辑器中单击insert/edit link后插入url时,它原样显示:

但在单击button..the后,url将更改为 www.google.com,如代码中所示。

我试图弄清楚我应该在js文件中给出什么作为我的元素变量,但是没有弄清楚。

我看了这里给出的解决方案:

WordPress hook / filter to process link inside a post

还有这里:

How to set target attribute in tinyMCE

但无法弄清楚问题所在。任何帮助都将是非常值得感谢的。提前谢谢你了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-06 03:50:46

根据插件的documentation,您需要在addButton事件中添加一个回调函数。在这个回调中,你应该完成你想要的。更新:请确保您在functions.php文件中有正确的js文件路径。在我的情况下,它似乎将是$plugin_array['droid'] = get_template_directory_uri() . '/assets/js/text-button.js';您遗漏的资产目录可能是?

试着这样做:

代码语言:javascript
复制
(function() {
        tinymce.create('tinymce.plugins.Droid', {
        init : function(editor, url) {
        editor.addButton('droid_title', {
        title : 'Droid Title',
        cmd : 'droid_title',
        image : '',
        onclick: function() {
            var selected_text = editor.selection.getContent();
            var element = "http://www.google.com";
            var return_text = "";
            return_text = '<a href="'+element+'" class="droid_title"  target="_blank">' + selected_text + '</span>';
            editor.insertContent(return_text);
           }
        });

工作示例demo

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51197218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档