有没有办法将“插入/编辑链接”的默认设置为“在新窗口中打开链接”?

时间:2011-01-26 作者:NealWalters

创建URL/HREF时,我几乎总是选择“在新窗口中打开链接”。是否有任何方法可以默认此选项。

即使它需要一点源代码更改,我认为这也是值得的(如果有人能告诉我可能在哪里)

5 个回复
最合适的回答,由SO网友:Jan Fabry 整理而成

TinyMCE似乎没有提供简单的设置来选择默认值。但还有另一个后门:theexternal_link_list_url TinyMCE选项可以指向将加载到链接编辑器窗口中的额外Javascript文件。您可以使用它来填充常见链接目的地的下拉列表,但由于它是一个常规Javascript文件,我们也可以在其中放置其他内容。类似的代码,如果我们不编辑现有链接,将更改目标列表下拉列表的选定值:

tinyMCEPopup.onInit.add( function() {
    if ( ! tinyMCEPopup.editor.dom.getParent( tinyMCEPopup.editor.selection.getNode(), \'A\' ) ) {
        selectByValue( document.forms[0], \'target_list\', \'_blank\' );
    }
} );
你可以为此创建一个WordPress插件,这样它就可以在WP更新后继续使用。在下创建新目录wp-content/plugins/ (随便你怎么称呼它,这样你以后就可以找到它)。在其中创建一个PHP文件(也可以随意调用),包含以下内容。您可以更改注释的内容,这将定义您在插件管理区域中看到的内容。

<?php
/*
Plugin Name: WPSE 7785
Plugin URI: http://wordpress.stackexchange.com/questions/7785/is-there-any-way-to-set-default-for-insertedit-link-to-open-link-in-new-window--
Description: Is there any way to set default for "Insert/Edit Link" to "Open link in new window"?  
Version: 1.0
Author: Jan Fabry
*/
add_filter( \'tiny_mce_before_init\', \'wpse7785_tiny_mce_before_init\' );
function wpse7785_tiny_mce_before_init( $initArray )
{
    $initArray[\'external_link_list_url\'] = plugins_url( \'wpse-7785.js\', __FILE__ );
    return $initArray;
}
现在,在该插件目录中,在PHP文件旁边创建一个Javascript文件。我叫它wpse-7785.js, 您可以选择其他内容,但请确保在plugins_url() 请致电上方。将第一个块的内容放在该Javascript文件中。

激活插件并转到编辑器。当您转到帖子编辑器并单击“编辑链接”按钮时,应该为“目标”下拉列表设置正确的值。

SO网友:eballo

我按照你的指示做了,根本没有工作,因为wordpress更改了一点链接的id。我修复了自己,创建了一个插件。

<?php
/*

 Plugin Name: Default New Window Link Opener
 Plugin URI: https://github.com/eballo
 Description: Plugin for wordpress that allow you to enable the check in the popup "Insert/Edit Link” to open a link in new window by default
 Version: 1.0
 Author: eballo

This plugin is based on the solution made by Jan Fabry and lewayotte in wordpress stackexchange forum.

http://wordpress.stackexchange.com/questions/7785/is-there-any-way-to-set-default-for-insert-edit-link-to-open-link-in-new-wind

*/

/**
 * Sets "Open link in a new window/tab" to checked by default
 */
function wplink_tiny_mce_init()
{
 ?>
    <script type="text/javascript">
    jQuery(function () {
       jQuery(\'input#wp-link-target\').prop(\'checked\',true);
    });
</script>    
<?php
}

add_action( \'before_wp_tiny_mce\', \'wplink_tiny_mce_init\' );

?>
如果有人想要我的解决方案,它就在这里工作:https://github.com/eballo/DefaultCheckedLink/

UPDATE: 创建和发布的插件:http://www.wordpress.org/plugins/default-new-window-link-opener

SO网友:lewayotte

这对我有用。。。

/*
 * Sets "Open link in a new window/tab" to checked by default
 */
function ahu_after_wp_tiny_mce() {
    ?>
    <script type="text/javascript">
    jQuery( function() {
        jQuery( \'input#link-target-checkbox\' ).prop( \'checked\', true );
    } );
    </script>    
    <?php
}
add_action( \'after_wp_tiny_mce\', \'ahu_after_wp_tiny_mce\' );
我把它放在wp-content/mu-plugins目录中的一个PHP文件中(如果它不存在,则需要创建)。

SO网友:Peter Rowell

可以为挂钩创建过滤器edit_tag_link 然后咀嚼链接来品尝。这是WP中大量未记录(或记录不足)的钩子之一。

我会尝试以下操作(警告:未测试):

function edit_tag_link_new_window($content) {
    $content = preg_replace(\'/href/\', \'target="_blank" href\', $content);
    return $content;
}
add_filter(\'edit_tag_link\', \'edit_tag_link_new_window\');

SO网友:Michael

我尝试了上面的插件名称:WPSE 7785 idea-该插件安装成功,但没有更改“在新窗口/选项卡中打开链接”的默认设置-我相信这是最初请求的意图。

我做了更多的搜索/测试,发现该控件实际上位于以下WordPress文件中:/wp admin/includes/internal linking。php

第85行附近有以下内容:

<input type="checkbox" id="link-target-checkbox" tabindex="30" /> <?php _e( \'Open link in a new window/tab\' ); ?></label>
我只是在输入中添加了“checked”:

<input type="checkbox" id="link-target-checkbox" checked tabindex="30" /> <?php _e( \'Open link in a new window/tab\' ); ?></label>
缺点是更新WordPress时会覆盖此文件,但目前我的WP文件夹中有一个“readme.txt”文件供将来参考/提醒。我确信有一种方法可以在admin文件夹外创建一个钩子,可以用来控制它,并且不受更新的影响,但我还没有达到WP技能的水平。

结束

相关推荐

Stop underlining image links

在我的小部件栏上,我有一个超链接的图像。问题是CSS强调了这一点。如何删除下划线?更新:刚刚注意到这是导致下划线的原因:} .entry a, .secondaryColumn a, #commentsContainer h3 a, .commentlist .comment-author a { border-bottom: 1px solid #ddd; color: #3c6c92; font-weight: bold;